{"version":3,"mappings":"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BACN,SAAU,mDAEV,SAAU,CACR,CACE,KAAM,kBACN,UAAWC,IACX,KAAM,gBACN,MAAO,GACP,SAAU,CACR,CACE,KAAM,sBACN,UAAWC,IACX,KAAM,sBACN,MAAO,EACT,EACA,CACE,KAAM,kBACN,UAAWC,IACX,KAAM,kBACN,MAAO,EACT,EACA,CACE,KAAM,eACN,UAAWC,IACX,KAAM,eACN,MAAO,EACT,EACA,CACE,KAAM,YACN,UAAWC,IACX,KAAM,YACN,MAAO,EACT,EACA,CACE,KAAM,WACN,UAAWC,IACX,KAAM,WACN,MAAO,EACT,EACA,CACE,KAAM,SACN,UAAWC,IACX,KAAM,SACN,MAAO,EACT,EACA,CACE,KAAM,aACN,UAAWC,IACX,KAAM,aACN,MAAO,EACT,EACA,CACE,KAAM,WACN,UAAWC,IACX,KAAM,WACN,MAAO,EACT,EAEA,CACE,KAAM,gBACN,UAAWC,IACX,KAAM,gBACN,MAAO,EACT,EACA,CACE,KAAM,qBACN,UAAWC,IACX,KAAM,qBACN,MAAO,EACT,CACF,CACF,CACF,CACF,EACA,CAEE,KAAM,iBACN,UAAWC,GACX,KAAM,mCACN,YAAat2L,CACf,EACA,CAEE,KAAM,wBACN,UAAWs2L,GACX,KAAM,yCACR,EACA,CAEE,KAAM,sBACN,UAAWC,IACX,KAAM,qCACR,EACA,CAEE,KAAM,OACN,UAAWC,GACX,KAAM,sCACN,YAAa,CAACzrM,EAAIC,EAAM/L,IAAS,CACxB,YAAM+0M,EAAiB,uBAAuB,EACrD/0M,EAAK,EAAK,CACZ,CACF,EACA,CAEE,KAAM,YACN,UAAWu3M,GACX,KAAM,2CACN,YAAa,CAACzrM,EAAIC,EAAM/L,IAAS,CACxB,YAAM+0M,EAAiB,wBAAwB,EACtD/0M,EAAK,EAAK,CACZ,CACF,EACA,CAEE,KAAM,cACN,UAAWw3M,IACX,KAAM,8BACN,YAAaz2L,CACf,EACA,CAEE,KAAM,gBACN,UAAW02L,IACX,KAAM,gCACN,YAAa12L,CACf,EACA,CAEE,KAAM,cACN,UAAW22L,IACX,KAAM,8BACN,YAAa32L,CACf,EACA,CAEE,KAAM,gBACN,UAAW42L,IACX,KAAM,gCACN,YAAa52L,CACf,EACA,CACE,KAAM,cACN,UAAW62L,IACX,KAAM,aACR,EACA,CACE,KAAM,GACN,SAAU,MACZ,EACA,CACE,KAAM,kBACN,SAAU,MACZ,CACF,CACF,EAIJ,uECzsBA,MAAKj9J,IAAap3C,GAAgB,oCCFlCs0M,IAAe,IACN,CACL,CACE,KAAM,GACN,UAAWC,GACX,SAAUhD,IAAiB,CAC7B,GCNG,IAAI1S,GAA8B,KAEzC,QAAe,IAAM,CACnB,MAAMt3K,EAAqC,CACzC,CACE,KAAM,IACN,KAAM,OACN,UAAWgtL,GACX,SAAUD,IAAkB,CAC9B,GAGI/nL,EAASioL,GAAuB,CACpC,QAASC,GAA2B,GAAwB,EAC5D,SACA,eAAelsM,EAAIC,EAAMksM,EAAe,CACtC,MAAO,CAAE,IAAK,EAAG,SAAU,QAAS,CACtC,EACD,EAED,SAAO,QAAe5hN,KACA,cAAY,cAAc,QAAQ,IAAIA,CAAG,EAC9D,EAIDy5B,EAAO,UAAU,CAAChkB,EAAIC,EAAMyoB,IAAY,CACjC0jL,GAA8B1jL,CAAO,GACxC,KAAK,QAAS,YAAa,CACzB,cAAe,OAAO,SAAS,SAAS,EACxC,WAAY,UAAU,UACtB,WAAY1oB,EAAG,KAChB,CACH,CACD,EACWs2L,KACLtyK,CACT,EC/BA,MAAK6qB,IAAap3C,GAAgB,qFAThC+jI,EAGM,YAFJhuH,GAAe6+L,GACf7+L,GAAa8+L;;;;;;iBCIf,SAAUhkG,EAAS,CAIsB71B,EAAO,QAE9CA,EAAiB,iBAAUriF,EAAM0xI,EAAQ,CACvC,OAAIA,IAAW,SAKT,OAAO,QAAW,YACpBA,EAAS+tC,WAGT/tC,EAAS+tC,WAAkBz/K,CAAI,GAGnCk4G,EAAQw5B,CAAM,EACPA,CACb,EAGIx5B,EAAQ,MAAM,CAElB,GAAG,SAAUw5B,EAAQ,CAInB,IAAIyqE,EAAK,UAAY,CAGrB,GAAIzqE,GAAUA,EAAO,IAAMA,EAAO,GAAG,SAAWA,EAAO,GAAG,QAAQ,IAChE,IAAIyqE,EAAKzqE,EAAO,GAAG,QAAQ,IAE/B,IAAIyqE,EAAG,OAAC,UAAY,CAAE,GAAI,CAACA,GAAM,CAACA,EAAG,UAAW,CAC3CA,EAAwBC,EAAUD,EAA5BA,EAAK,GAChB;AAAA;AAAA;AAAA,GAQA,IAAIE,EAAWD,EAASn+K,GACvB,SAAUq+K,EAAO,CACd,IAAI57J,EAAM67J,EAAKryN,EAAS2oC,EACpB2pL,EAAU,CAAE,EACZC,EAAU,CAAE,EACZn+K,EAAS,CAAE,EACXo+K,EAAW,CAAE,EACb3uN,EAAS,OAAO,UAAU,eAC1B4uN,GAAM,CAAE,EAAC,MACTC,GAAiB,QAErB,SAASC,GAAQvtN,EAAK0iB,GAAM,CACxB,OAAOjkB,EAAO,KAAKuB,EAAK0iB,EAAI,CAC/B,CAUD,SAAS8qM,GAAUlxN,EAAMmxN,GAAU,CAC/B,IAAIC,GAAWC,EAAaC,GAAUC,GAAUxgL,GAC5CygL,GAAQC,GAAcC,GAAO/yN,GAAGqwB,GAAGsyJ,GAAMqwC,GACzCC,GAAYT,IAAYA,GAAS,MAAM,GAAG,EAC1C1yN,GAAMi0C,EAAO,IACbm/K,GAAWpzN,IAAOA,GAAI,MAAS,GAGnC,GAAIuB,EAAM,CAwBN,IAvBAA,EAAOA,EAAK,MAAM,GAAG,EACrB+wC,GAAY/wC,EAAK,OAAS,EAMtB0yC,EAAO,cAAgBs+K,GAAe,KAAKhxN,EAAK+wC,GAAU,IAC1D/wC,EAAK+wC,IAAa/wC,EAAK+wC,IAAW,QAAQigL,GAAgB,EAAE,GAI5DhxN,EAAK,GAAG,OAAO,CAAC,IAAM,KAAO4xN,KAM7BD,GAAsBC,GAAU,MAAM,EAAGA,GAAU,OAAS,CAAC,EAC7D5xN,EAAO2xN,GAAoB,OAAO3xN,CAAI,GAIrCrB,GAAI,EAAGA,GAAIqB,EAAK,OAAQrB,KAEzB,GADA2iL,GAAOthL,EAAKrB,IACR2iL,KAAS,IACTthL,EAAK,OAAOrB,GAAG,CAAC,EAChBA,IAAK,UACE2iL,KAAS,KAAM,CAMtB,GAAI3iL,KAAM,GAAMA,KAAM,GAAKqB,EAAK,KAAO,MAASA,EAAKrB,GAAI,KAAO,KAC5D,SACOA,GAAI,IACXqB,EAAK,OAAOrB,GAAI,EAAG,CAAC,EACpBA,IAAK,EAEZ,CAILqB,EAAOA,EAAK,KAAK,GAAG,CACvB,CAGD,IAAK4xN,IAAaC,KAAYpzN,GAAK,CAG/B,IAFA2yN,GAAYpxN,EAAK,MAAM,GAAG,EAErBrB,GAAIyyN,GAAU,OAAQzyN,GAAI,EAAGA,IAAK,EAAG,CAGtC,GAFA0yN,EAAcD,GAAU,MAAM,EAAGzyN,EAAC,EAAE,KAAK,GAAG,EAExCizN,IAGA,IAAK5iM,GAAI4iM,GAAU,OAAQ5iM,GAAI,EAAGA,IAAK,EAKnC,GAJAsiM,GAAW7yN,GAAImzN,GAAU,MAAM,EAAG5iM,EAAC,EAAE,KAAK,GAAG,GAIzCsiM,KACAA,GAAWA,GAASD,GAChBC,IAAU,CAEVC,GAAWD,GACXE,GAAS7yN,GACT,KACH,EAKb,GAAI4yN,GACA,MAMA,CAACE,IAAgBI,IAAWA,GAAQR,KACpCI,GAAeI,GAAQR,GACvBK,GAAQ/yN,GAEf,CAEG,CAAC4yN,IAAYE,KACbF,GAAWE,GACXD,GAASE,IAGTH,KACAH,GAAU,OAAO,EAAGI,GAAQD,EAAQ,EACpCvxN,EAAOoxN,GAAU,KAAK,GAAG,EAEhC,CAED,OAAOpxN,CACV,CAED,SAAS8xN,EAAYC,EAASC,GAAW,CACrC,OAAO,UAAY,CAIf,IAAIzqN,GAAOwpN,GAAI,KAAK,UAAW,CAAC,EAKhC,OAAI,OAAOxpN,GAAK,IAAO,UAAYA,GAAK,SAAW,GAC/CA,GAAK,KAAK,IAAI,EAEXopN,EAAI,MAAMD,EAAOnpN,GAAK,OAAO,CAACwqN,EAASC,EAAS,CAAC,CAAC,CACrE,CACK,CAED,SAASC,GAAcF,EAAS,CAC5B,OAAO,SAAU/xN,GAAM,CACnB,OAAOkxN,GAAUlxN,GAAM+xN,CAAO,CAC1C,CACK,CAED,SAASG,GAASC,EAAS,CACvB,OAAO,SAAUnzN,GAAO,CACpB4xN,EAAQuB,GAAWnzN,EAC/B,CACK,CAED,SAASozN,EAAQpyN,EAAM,CACnB,GAAIixN,GAAQJ,EAAS7wN,CAAI,EAAG,CACxB,IAAIuH,GAAOspN,EAAQ7wN,GACnB,OAAO6wN,EAAQ7wN,GACf8wN,EAAS9wN,GAAQ,GACjB80D,EAAK,MAAM47J,EAAOnpN,EAAI,CACzB,CAED,GAAI,CAAC0pN,GAAQL,EAAS5wN,CAAI,GAAK,CAACixN,GAAQH,EAAU9wN,CAAI,EAClD,MAAM,IAAI,MAAM,MAAQA,CAAI,EAEhC,OAAO4wN,EAAQ5wN,EAClB,CAKD,SAASqyN,EAAYryN,EAAM,CACvB,IAAI0pE,GACA5pD,GAAQ9f,EAAOA,EAAK,QAAQ,GAAG,EAAI,GACvC,OAAI8f,GAAQ,KACR4pD,GAAS1pE,EAAK,UAAU,EAAG8f,EAAK,EAChC9f,EAAOA,EAAK,UAAU8f,GAAQ,EAAG9f,EAAK,MAAM,GAEzC,CAAC0pE,GAAQ1pE,CAAI,CACvB,CAID,SAASsyN,EAAaP,EAAS,CAC3B,OAAOA,EAAUM,EAAYN,CAAO,EAAI,EAC3C,CAODzzN,EAAU,SAAU0B,EAAMuyN,GAAU,CAChC,IAAIrqM,GACA8zI,EAAQq2D,EAAYryN,CAAI,EACxB0pE,GAASsyF,EAAM,GACfw2D,GAAkBD,GAAS,GAE/B,SAAOv2D,EAAM,GAETtyF,KACAA,GAASwnJ,GAAUxnJ,GAAQ8oJ,EAAe,EAC1CtqM,GAASkqM,EAAQ1oJ,EAAM,GAIvBA,GACIxhD,IAAUA,GAAO,UACjBloB,EAAOkoB,GAAO,UAAUloB,EAAMiyN,GAAcO,EAAe,CAAC,EAE5DxyN,EAAOkxN,GAAUlxN,EAAMwyN,EAAe,GAG1CxyN,EAAOkxN,GAAUlxN,EAAMwyN,EAAe,EACtCx2D,EAAQq2D,EAAYryN,CAAI,EACxB0pE,GAASsyF,EAAM,GACfh8J,EAAOg8J,EAAM,GACTtyF,KACAxhD,GAASkqM,EAAQ1oJ,EAAM,IAKxB,CACH,EAAGA,GAASA,GAAS,IAAM1pE,EAAOA,EAClC,EAAGA,EACH,GAAI0pE,GACJ,EAAGxhD,EACf,CACA,EAEI,SAASuqM,EAAWzyN,EAAM,CACtB,OAAO,UAAY,CACf,OAAQ0yC,GAAUA,EAAO,QAAUA,EAAO,OAAO1yC,IAAU,EACvE,CACK,CAEDinC,EAAW,CACP,QAAS,SAAUjnC,EAAM,CACrB,OAAO8xN,EAAY9xN,CAAI,CAC1B,EACD,QAAS,SAAUA,EAAM,CACrB,IAAIszB,GAAIs9L,EAAQ5wN,GAChB,OAAI,OAAOszB,IAAM,YACNA,GAECs9L,EAAQ5wN,GAAQ,EAE/B,EACD,OAAQ,SAAUA,EAAM,CACpB,MAAO,CACH,GAAIA,EACJ,IAAK,GACL,QAAS4wN,EAAQ5wN,GACjB,OAAQyyN,EAAWzyN,CAAI,CACvC,CACS,CACT,EAEI80D,EAAO,SAAU90D,EAAMiF,GAAMgF,GAAU8nN,EAAS,CAC5C,IAAIW,GAAWP,GAAStyN,GAAKpB,GAAKE,GAAG4zN,GACjChrN,GAAO,CAAE,EACTorN,GAAe,OAAO1oN,GACtB2oN,GAOJ,GAJAb,EAAUA,GAAW/xN,EACrBuyN,GAAWD,EAAaP,CAAO,EAG3BY,KAAiB,aAAeA,KAAiB,WAAY,CAK7D,IADA1tN,GAAO,CAACA,GAAK,QAAUgF,GAAS,OAAS,CAAC,UAAW,UAAW,QAAQ,EAAIhF,GACvEtG,GAAI,EAAGA,GAAIsG,GAAK,OAAQtG,IAAK,EAK9B,GAJAF,GAAMH,EAAQ2G,GAAKtG,IAAI4zN,EAAQ,EAC/BJ,GAAU1zN,GAAI,EAGV0zN,KAAY,UACZ5qN,GAAK5I,IAAKsoC,EAAS,QAAQjnC,CAAI,UACxBmyN,KAAY,UAEnB5qN,GAAK5I,IAAKsoC,EAAS,QAAQjnC,CAAI,EAC/B4yN,GAAe,WACRT,KAAY,SAEnBO,GAAYnrN,GAAK5I,IAAKsoC,EAAS,OAAOjnC,CAAI,UACnCixN,GAAQL,EAASuB,EAAO,GACxBlB,GAAQJ,EAASsB,EAAO,GACxBlB,GAAQH,EAAUqB,EAAO,EAChC5qN,GAAK5I,IAAKyzN,EAAQD,EAAO,UAClB1zN,GAAI,EACXA,GAAI,EAAE,KAAKA,GAAI,EAAGqzN,EAAYC,EAAS,EAAI,EAAGG,GAASC,EAAO,EAAG,CAAE,GACnE5qN,GAAK5I,IAAKiyN,EAAQuB,QAElB,OAAM,IAAI,MAAMnyN,EAAO,YAAcmyN,EAAO,EAIpDtyN,GAAMoK,GAAWA,GAAS,MAAM2mN,EAAQ5wN,GAAOuH,EAAI,EAAI,OAEnDvH,IAII0yN,IAAaA,GAAU,UAAYhC,GAC/BgC,GAAU,UAAY9B,EAAQ5wN,GAClC4wN,EAAQ5wN,GAAQ0yN,GAAU,SACnB7yN,KAAQ6wN,GAAS,CAACkC,MAEzBhC,EAAQ5wN,GAAQH,IAG3B,MAAUG,IAGP4wN,EAAQ5wN,GAAQiK,GAE5B,EAEIwmN,EAAYD,EAAUG,EAAM,SAAU1rN,EAAMgF,GAAU8nN,GAASC,EAAWa,GAAK,CAC3E,GAAI,OAAO5tN,GAAS,SAChB,OAAIgiC,EAAShiC,GAEFgiC,EAAShiC,GAAMgF,EAAQ,EAM3BmoN,EAAQ9zN,EAAQ2G,EAAMqtN,EAAaroN,EAAQ,CAAC,EAAE,CAAC,EACnD,GAAI,CAAChF,EAAK,OAAQ,CAMrB,GAJAytC,EAASztC,EACLytC,EAAO,MACPi+K,EAAIj+K,EAAO,KAAMA,EAAO,QAAQ,EAEhC,CAACzoC,GACD,OAGAA,GAAS,QAGThF,EAAOgF,GACPA,GAAW8nN,GACXA,GAAU,MAEV9sN,EAAOyrN,CAEd,CAGD,UAAWzmN,IAAY,UAAY,GAI/B,OAAO8nN,IAAY,aACnBA,GAAUC,EACVA,EAAYa,IAIZb,EACAl9J,EAAK47J,EAAOzrN,EAAMgF,GAAU8nN,EAAO,EAQnC,WAAW,UAAY,CACnBj9J,EAAK47J,EAAOzrN,EAAMgF,GAAU8nN,EAAO,CACtC,EAAE,CAAC,EAGDpB,CACf,EAMIA,EAAI,OAAS,SAAUmC,EAAK,CACxB,OAAOnC,EAAImC,CAAG,CACtB,EAKIrC,EAAU,SAAWG,EAErBv+K,EAAS,SAAUryC,EAAMiF,GAAMgF,GAAU,CACrC,GAAI,OAAOjK,GAAS,SAChB,MAAM,IAAI,MAAM,2DAA2D,EAI1EiF,GAAK,SAINgF,GAAWhF,GACXA,GAAO,IAGP,CAACgsN,GAAQL,EAAS5wN,CAAI,GAAK,CAACixN,GAAQJ,EAAS7wN,CAAI,IACjD6wN,EAAQ7wN,GAAQ,CAACA,EAAMiF,GAAMgF,EAAQ,EAEjD,EAEIooC,EAAO,IAAM,CACT,OAAQ,EAChB,CACA,KAEAk+K,EAAG,UAAYE,EAAUF,EAAG,QAAUC,EAAQD,EAAG,OAASl+K,CAC1D,CACA,IACAk+K,EAAG,OAAO,SAAU,UAAU,EAAE,EAGhCA,EAAG,OAAO,SAAS,GAAG,UAAY,CAChC,IAAIxqD,EAAKjgB,GAAU,EAEnB,OAAIigB,GAAM,MAAQ,SAAW,QAAQ,OACnC,QAAQ,MACN,uJAGN,EAGSA,CACT,CAAC,EAEDwqD,EAAG,OAAO,gBAAgB,CACxB,QACF,EAAG,SAAUrlJ,EAAG,CACd,IAAI6nJ,EAAQ,GAEZA,EAAM,OAAS,SAAUC,EAAYC,EAAY,CAC/C,IAAIC,EAAY,CAAE,EAAC,eAEnB,SAASC,GAAmB,CAC1B,KAAK,YAAcH,CACpB,CAED,QAASxzN,KAAOyzN,EACVC,EAAU,KAAKD,EAAYzzN,CAAG,IAChCwzN,EAAWxzN,GAAOyzN,EAAWzzN,IAIjC,SAAgB,UAAYyzN,EAAW,UACvCD,EAAW,UAAY,IAAIG,EAC3BH,EAAW,UAAYC,EAAW,UAE3BD,CACX,EAEE,SAASI,EAAYC,EAAU,CAC7B,IAAIjzH,EAAQizH,EAAS,UAEjBvxM,EAAU,GAEd,QAASs2B,KAAcgoD,EAAO,CAC5B,IAAIj8E,EAAIi8E,EAAMhoD,GAEV,OAAOj0B,GAAM,YAIbi0B,IAAe,eAInBt2B,EAAQ,KAAKs2B,CAAU,CACxB,CAED,OAAOt2B,CACR,CAEDixM,EAAM,SAAW,SAAUE,EAAYK,EAAgB,CACrD,IAAIC,EAAmBH,EAAWE,CAAc,EAC5CE,EAAeJ,EAAWH,CAAU,EAExC,SAASQ,GAAkB,CACzB,IAAIC,GAAU,MAAM,UAAU,QAE1BC,EAAWL,EAAe,UAAU,YAAY,OAEhDM,GAAoBX,EAAW,UAAU,YAEzCU,EAAW,IACbD,GAAQ,KAAK,UAAWT,EAAW,UAAU,WAAW,EAExDW,GAAoBN,EAAe,UAAU,aAG/CM,GAAkB,MAAM,KAAM,SAAS,CACxC,CAEDN,EAAe,YAAcL,EAAW,YAExC,SAASY,GAAO,CACd,KAAK,YAAcJ,CACpB,CAEDA,EAAe,UAAY,IAAII,EAE/B,QAAS1vM,EAAI,EAAGA,EAAIqvM,EAAa,OAAQrvM,IAAK,CAC5C,IAAI2vM,EAAcN,EAAarvM,GAE/BsvM,EAAe,UAAUK,GACvBb,EAAW,UAAUa,EACxB,CAqBD,QAnBIC,GAAe,SAAU37K,GAAY,CAEvC,IAAI47K,EAAiB,UAAY,GAE7B57K,MAAcq7K,EAAe,YAC/BO,EAAiBP,EAAe,UAAUr7K,KAG5C,IAAI67K,GAAkBX,EAAe,UAAUl7K,IAE/C,OAAO,UAAY,CACjB,IAAIs7K,GAAU,MAAM,UAAU,QAE9B,UAAQ,KAAK,UAAWM,CAAc,EAE/BC,GAAgB,MAAM,KAAM,SAAS,CACpD,CACA,EAEajtF,GAAI,EAAGA,GAAIusF,EAAiB,OAAQvsF,KAAK,CAChD,IAAIitF,GAAkBV,EAAiBvsF,IAEvCysF,EAAe,UAAUQ,IAAmBF,GAAaE,EAAe,CACzE,CAED,OAAOR,CACX,EAEE,IAAIS,EAAa,UAAY,CAC3B,KAAK,UAAY,EACrB,EAEEA,EAAW,UAAU,GAAK,SAAU/iN,EAAOlH,EAAU,CACnD,KAAK,UAAY,KAAK,WAAa,GAE/BkH,KAAS,KAAK,UAChB,KAAK,UAAUA,GAAO,KAAKlH,CAAQ,EAEnC,KAAK,UAAUkH,GAAS,CAAClH,CAAQ,CAEvC,EAEEiqN,EAAW,UAAU,QAAU,SAAU/iN,EAAO,CAC9C,IAAI2qG,EAAQ,MAAM,UAAU,MACxB5hF,EAAS4hF,EAAM,KAAK,UAAW,CAAC,EAEpC,KAAK,UAAY,KAAK,WAAa,GAG/B5hF,GAAU,OACZA,EAAS,IAIPA,EAAO,SAAW,GACpBA,EAAO,KAAK,EAAE,EAIhBA,EAAO,GAAG,MAAQ/oB,EAEdA,KAAS,KAAK,WAChB,KAAK,OAAO,KAAK,UAAUA,GAAQ2qG,EAAM,KAAK,UAAW,CAAC,CAAC,EAGzD,MAAO,KAAK,WACd,KAAK,OAAO,KAAK,UAAU,KAAM,SAAS,CAEhD,EAEEo4G,EAAW,UAAU,OAAS,SAAUn2L,EAAW7D,EAAQ,CACzD,QAASv7B,EAAI,EAAG+xB,EAAMqN,EAAU,OAAQp/B,EAAI+xB,EAAK/xB,IAC/Co/B,EAAUp/B,GAAG,MAAM,KAAMu7B,CAAM,CAErC,EAEE64L,EAAM,WAAamB,EAEnBnB,EAAM,cAAgB,SAAU3qL,EAAQ,CAGtC,QAFIwtE,EAAQ,GAEHj3G,EAAI,EAAGA,EAAIypC,EAAQzpC,IAAK,CAC/B,IAAIw1N,EAAa,KAAK,MAAM,KAAK,OAAM,EAAK,EAAE,EAC9Cv+G,GAASu+G,EAAW,SAAS,EAAE,CAChC,CAED,OAAOv+G,CACX,EAEEm9G,EAAM,KAAO,SAAU17H,EAAMvvE,EAAS,CACpC,OAAO,UAAY,CACjBuvE,EAAK,MAAMvvE,EAAS,SAAS,CACnC,CACA,EAEEirM,EAAM,aAAe,SAAUj/M,EAAM,CACnC,QAASsgN,KAAetgN,EAAM,CAC5B,IAAIQ,EAAO8/M,EAAY,MAAM,GAAG,EAE5BC,EAAYvgN,EAEhB,GAAIQ,EAAK,SAAW,EAIpB,SAAS+kB,EAAI,EAAGA,EAAI/kB,EAAK,OAAQ+kB,IAAK,CACpC,IAAI75B,EAAM8U,EAAK+kB,GAIf75B,EAAMA,EAAI,UAAU,EAAG,CAAC,EAAE,YAAW,EAAKA,EAAI,UAAU,CAAC,EAEnDA,KAAO60N,IACXA,EAAU70N,GAAO,IAGf65B,GAAK/kB,EAAK,OAAS,IACrB+/M,EAAU70N,GAAOsU,EAAKsgN,IAGxBC,EAAYA,EAAU70N,EACvB,CAED,OAAOsU,EAAKsgN,GACb,CAED,OAAOtgN,CACX,EAEEi/M,EAAM,UAAY,SAAUjzM,EAAO7d,EAAI,CAOrC,IAAIqyN,EAAMppJ,EAAEjpE,CAAE,EACVg8D,EAAYh8D,EAAG,MAAM,UACrBi8D,EAAYj8D,EAAG,MAAM,UAGzB,OAAIg8D,IAAcC,IACbA,IAAc,UAAYA,IAAc,WACpC,GAGLD,IAAc,UAAYC,IAAc,SACnC,GAGDo2J,EAAI,cAAgBryN,EAAG,cAC7BqyN,EAAI,WAAU,EAAKryN,EAAG,WAC5B,EAEE8wN,EAAM,aAAe,SAAUwB,EAAQ,CACrC,IAAIC,EAAa,CACf,KAAM,QACN,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAM,QACN,IAAK,OACX,EAGI,OAAI,OAAOD,GAAW,SACbA,EAGF,OAAOA,CAAM,EAAE,QAAQ,eAAgB,SAAU7tM,EAAO,CAC7D,OAAO8tM,EAAW9tM,EACxB,CAAK,CACL,EAGEqsM,EAAM,QAAU,GAEhB,IAAIjjN,EAAK,EACT,SAAM,mBAAqB,SAAUulD,EAAS,CAM5C,IAAIo/J,EAAYp/J,EAAQ,aAAa,iBAAiB,EAEtD,OAAIo/J,GAAa,OAKbp/J,EAAQ,GACVo/J,EAAY,gBAAkBp/J,EAAQ,GAEtCo/J,EAAY,iBAAmB,EAAE3kN,GAAI,SAAU,EAC7C,IAAMijN,EAAM,cAAc,CAAC,EAG/B19J,EAAQ,aAAa,kBAAmBo/J,CAAS,GAE1CA,CACX,EAEE1B,EAAM,UAAY,SAAU19J,EAASr1D,EAAMhB,EAAO,CAGhD,IAAI8Q,EAAKijN,EAAM,mBAAmB19J,CAAO,EACpC09J,EAAM,QAAQjjN,KACjBijN,EAAM,QAAQjjN,GAAM,IAGtBijN,EAAM,QAAQjjN,GAAI9P,GAAQhB,CAC9B,EAEE+zN,EAAM,QAAU,SAAU19J,EAASr1D,EAAM,CAKvC,IAAI8P,EAAKijN,EAAM,mBAAmB19J,CAAO,EACzC,OAAIr1D,EACE+yN,EAAM,QAAQjjN,IACZijN,EAAM,QAAQjjN,GAAI9P,IAAS,KACtB+yN,EAAM,QAAQjjN,GAAI9P,GAItBkrE,EAAE7V,CAAO,EAAE,KAAKr1D,CAAI,EAEpB+yN,EAAM,QAAQjjN,EAE3B,EAEEijN,EAAM,WAAa,SAAU19J,EAAS,CAEpC,IAAIvlD,EAAKijN,EAAM,mBAAmB19J,CAAO,EACrC09J,EAAM,QAAQjjN,IAAO,MACvB,OAAOijN,EAAM,QAAQjjN,GAGvBulD,EAAQ,gBAAgB,iBAAiB,CAC7C,EAEE09J,EAAM,0BAA4B,SAAUr7D,EAAMxR,EAAK,CAGrD,IAAIwuE,EAAqBh9D,EAAK,aAAa,OAAO,EAAE,KAAM,EAAC,MAAM,KAAK,EAEtEg9D,EAAqBA,EAAmB,OAAO,SAAUC,EAAO,CAE9D,OAAOA,EAAM,QAAQ,UAAU,IAAM,CAC3C,CAAK,EAED,IAAIC,EAAgB1uE,EAAI,aAAa,OAAO,EAAE,KAAM,EAAC,MAAM,KAAK,EAEhE0uE,EAAgBA,EAAc,OAAO,SAAUD,EAAO,CAEpD,OAAOA,EAAM,QAAQ,UAAU,IAAM,CAC3C,CAAK,EAED,IAAIE,EAAeH,EAAmB,OAAOE,CAAa,EAE1Dl9D,EAAK,aAAa,QAASm9D,EAAa,KAAK,GAAG,CAAC,CACrD,EAES9B,CACT,CAAC,EAEDxC,EAAG,OAAO,kBAAkB,CAC1B,SACA,SACF,EAAG,SAAUrlJ,EAAG6nJ,EAAO,CACrB,SAAS+B,EAASC,EAAUziN,EAAS0iN,EAAa,CAChD,KAAK,SAAWD,EAChB,KAAK,KAAOC,EACZ,KAAK,QAAU1iN,EAEfwiN,EAAQ,UAAU,YAAY,KAAK,IAAI,CACxC,CAED,SAAM,OAAOA,EAAS/B,EAAM,UAAU,EAEtC+B,EAAQ,UAAU,OAAS,UAAY,CACrC,IAAIG,EAAW/pJ,EACb,2DACN,EAEI,OAAI,KAAK,QAAQ,IAAI,UAAU,GAC7B+pJ,EAAS,KAAK,uBAAwB,MAAM,EAG9C,KAAK,SAAWA,EAETA,CACX,EAEEH,EAAQ,UAAU,MAAQ,UAAY,CACpC,KAAK,SAAS,OAClB,EAEEA,EAAQ,UAAU,eAAiB,SAAU56L,EAAQ,CACnD,IAAIg7L,EAAe,KAAK,QAAQ,IAAI,cAAc,EAElD,KAAK,MAAK,EACV,KAAK,YAAW,EAEhB,IAAIC,EAAWjqJ,EACb,8EAEN,EAEQhpC,EAAU,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAIhI,EAAO,OAAO,EAEjEi7L,EAAS,OACPD,EACEhzL,EAAQhI,EAAO,IAAI,CACpB,CACP,EAEIi7L,EAAS,GAAG,WAAa,4BAEzB,KAAK,SAAS,OAAOA,CAAQ,CACjC,EAEEL,EAAQ,UAAU,aAAe,UAAY,CAC3C,KAAK,SAAS,KAAK,2BAA2B,EAAE,OAAM,CAC1D,EAEEA,EAAQ,UAAU,OAAS,SAAUhhN,EAAM,CACzC,KAAK,YAAW,EAEhB,IAAIslM,EAAW,GAEf,GAAItlM,EAAK,SAAW,MAAQA,EAAK,QAAQ,SAAW,EAAG,CACjD,KAAK,SAAS,SAAQ,EAAG,SAAW,GACtC,KAAK,QAAQ,kBAAmB,CAC9B,QAAS,WACnB,CAAS,EAGH,MACD,CAEDA,EAAK,QAAU,KAAK,KAAKA,EAAK,OAAO,EAErC,QAASkzH,EAAI,EAAGA,EAAIlzH,EAAK,QAAQ,OAAQkzH,IAAK,CAC5C,IAAI5nI,EAAO0U,EAAK,QAAQkzH,GAEpBouF,EAAU,KAAK,OAAOh2N,CAAI,EAE9Bg6M,EAAS,KAAKgc,CAAO,CACtB,CAED,KAAK,SAAS,OAAOhc,CAAQ,CACjC,EAEE0b,EAAQ,UAAU,SAAW,SAAUG,EAAUI,EAAW,CAC1D,IAAIC,EAAoBD,EAAU,KAAK,kBAAkB,EACzDC,EAAkB,OAAOL,CAAQ,CACrC,EAEEH,EAAQ,UAAU,KAAO,SAAUhhN,EAAM,CACvC,IAAIyhN,EAAS,KAAK,QAAQ,IAAI,QAAQ,EAEtC,OAAOA,EAAOzhN,CAAI,CACtB,EAEEghN,EAAQ,UAAU,mBAAqB,UAAY,CACjD,IAAI1b,EAAW,KAAK,SACjB,KAAK,sCAAsC,EAE1Coc,EAAYpc,EAAS,OAAO,oCAAoC,EAGhEoc,EAAU,OAAS,EAErBA,EAAU,MAAK,EAAG,QAAQ,YAAY,EAItCpc,EAAS,MAAK,EAAG,QAAQ,YAAY,EAGvC,KAAK,uBAAsB,CAC/B,EAEE0b,EAAQ,UAAU,WAAa,UAAY,CACzC,IAAI/mN,EAAO,KAEX,KAAK,KAAK,QAAQ,SAAUypE,EAAU,CACpC,IAAIi+I,EAAcj+I,EAAS,IAAI,SAAUr+D,EAAG,CAC1C,OAAOA,EAAE,GAAG,UACpB,CAAO,EAEGigM,EAAWrrM,EAAK,SACjB,KAAK,sCAAsC,EAE9CqrM,EAAS,KAAK,UAAY,CACxB,IAAIgc,EAAUlqJ,EAAE,IAAI,EAEhB9rE,EAAO2zN,EAAM,QAAQ,KAAM,MAAM,EAGjCjjN,EAAK,GAAK1Q,EAAK,GAEdA,EAAK,SAAW,MAAQA,EAAK,QAAQ,UACrCA,EAAK,SAAW,MAAQq2N,EAAY,QAAQ3lN,CAAE,EAAI,IACrD,KAAK,UAAU,IAAI,mCAAmC,EACtDslN,EAAQ,KAAK,gBAAiB,MAAM,IAEpC,KAAK,UAAU,OAAO,mCAAmC,EACzDA,EAAQ,KAAK,gBAAiB,OAAO,EAE/C,CAAO,CAEP,CAAK,CACL,EAEEN,EAAQ,UAAU,YAAc,SAAU56L,EAAQ,CAChD,KAAK,YAAW,EAEhB,IAAIw7L,EAAc,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAI,WAAW,EAE9DC,EAAU,CACZ,SAAU,GACV,QAAS,GACT,KAAMD,EAAYx7L,CAAM,CAC9B,EACQ07L,EAAW,KAAK,OAAOD,CAAO,EAClCC,EAAS,WAAa,mBAEtB,KAAK,SAAS,QAAQA,CAAQ,CAClC,EAEEd,EAAQ,UAAU,YAAc,UAAY,CAC1C,KAAK,SAAS,KAAK,kBAAkB,EAAE,OAAM,CACjD,EAEEA,EAAQ,UAAU,OAAS,SAAUhhN,EAAM,CACzC,IAAI8kB,EAAS,SAAS,cAAc,IAAI,EACxCA,EAAO,UAAU,IAAI,yBAAyB,EAC9CA,EAAO,UAAU,IAAI,qCAAqC,EAE1D,IAAI7kB,EAAQ,CACV,KAAQ,QACd,EAEQy9B,EAAU,OAAO,QAAQ,UAAU,SACrC,OAAO,QAAQ,UAAU,mBACzB,OAAO,QAAQ,UAAU,uBAEtB19B,EAAK,SAAW,MAAQ09B,EAAQ,KAAK19B,EAAK,QAAS,WAAW,GAC9DA,EAAK,SAAW,MAAQA,EAAK,YAChCC,EAAM,iBAAmB,OAEzB6kB,EAAO,UAAU,OAAO,qCAAqC,EAC7DA,EAAO,UAAU,IAAI,mCAAmC,GAGtD9kB,EAAK,IAAM,MACb8kB,EAAO,UAAU,OAAO,qCAAqC,EAG3D9kB,EAAK,WAAa,OACpB8kB,EAAO,GAAK9kB,EAAK,WAGfA,EAAK,QACP8kB,EAAO,MAAQ9kB,EAAK,OAGlBA,EAAK,WACPC,EAAM,KAAO,QACbA,EAAM,cAAgBD,EAAK,KAE3B8kB,EAAO,UAAU,OAAO,qCAAqC,EAC7DA,EAAO,UAAU,IAAI,gCAAgC,GAGvD,QAASm8F,KAAQhhH,EAAO,CACtB,IAAInV,EAAMmV,EAAMghH,GAEhBn8F,EAAO,aAAam8F,EAAMn2H,CAAG,CAC9B,CAED,GAAIkV,EAAK,SAAU,CACjB,IAAIshN,EAAUlqJ,EAAEtyC,CAAM,EAElBu8F,EAAQ,SAAS,cAAc,QAAQ,EAC3CA,EAAM,UAAY,yBAElB,KAAK,SAASrhH,EAAMqhH,CAAK,EAIzB,QAFI0gG,EAAY,GAEP9yN,EAAI,EAAGA,EAAI+Q,EAAK,SAAS,OAAQ/Q,IAAK,CAC7C,IAAI8R,GAAQf,EAAK,SAAS/Q,GAEtB+yN,GAAS,KAAK,OAAOjhN,EAAK,EAE9BghN,EAAU,KAAKC,EAAM,CACtB,CAED,IAAIC,GAAqB7qJ,EAAE,YAAa,CACtC,MAAS,4DACT,KAAQ,MAChB,CAAO,EAED6qJ,GAAmB,OAAOF,CAAS,EAEnCT,EAAQ,OAAOjgG,CAAK,EACpBigG,EAAQ,OAAOW,EAAkB,CACvC,MACM,KAAK,SAASjiN,EAAM8kB,CAAM,EAG5B,SAAM,UAAUA,EAAQ,OAAQ9kB,CAAI,EAE7B8kB,CACX,EAEEk8L,EAAQ,UAAU,KAAO,SAAU3+M,EAAW6/M,EAAY,CACxD,IAAIjoN,EAAO,KAEP+B,EAAKqG,EAAU,GAAK,WAExB,KAAK,SAAS,KAAK,KAAMrG,CAAE,EAE3BqG,EAAU,GAAG,cAAe,SAAU+jB,EAAQ,CAC5CnsB,EAAK,MAAK,EACVA,EAAK,OAAOmsB,EAAO,IAAI,EAEnB/jB,EAAU,WACZpI,EAAK,WAAU,EACfA,EAAK,mBAAkB,EAE/B,CAAK,EAEDoI,EAAU,GAAG,iBAAkB,SAAU+jB,EAAQ,CAC/CnsB,EAAK,OAAOmsB,EAAO,IAAI,EAEnB/jB,EAAU,UACZpI,EAAK,WAAU,CAEvB,CAAK,EAEDoI,EAAU,GAAG,QAAS,SAAU+jB,EAAQ,CACtCnsB,EAAK,aAAY,EACjBA,EAAK,YAAYmsB,CAAM,CAC7B,CAAK,EAED/jB,EAAU,GAAG,SAAU,UAAY,CAC7B,CAACA,EAAU,WAIfpI,EAAK,WAAU,EAEXA,EAAK,QAAQ,IAAI,mBAAmB,GACtCA,EAAK,mBAAkB,EAE/B,CAAK,EAEDoI,EAAU,GAAG,WAAY,UAAY,CAC/B,CAACA,EAAU,WAIfpI,EAAK,WAAU,EAEXA,EAAK,QAAQ,IAAI,mBAAmB,GACtCA,EAAK,mBAAkB,EAE/B,CAAK,EAEDoI,EAAU,GAAG,OAAQ,UAAY,CAE/BpI,EAAK,SAAS,KAAK,gBAAiB,MAAM,EAC1CA,EAAK,SAAS,KAAK,cAAe,OAAO,EAEzCA,EAAK,WAAU,EACfA,EAAK,uBAAsB,CACjC,CAAK,EAEDoI,EAAU,GAAG,QAAS,UAAY,CAEhCpI,EAAK,SAAS,KAAK,gBAAiB,OAAO,EAC3CA,EAAK,SAAS,KAAK,cAAe,MAAM,EACxCA,EAAK,SAAS,WAAW,uBAAuB,CACtD,CAAK,EAEDoI,EAAU,GAAG,iBAAkB,UAAY,CACzC,IAAI8/M,EAAeloN,EAAK,wBAEpBkoN,EAAa,SAAW,GAI5BA,EAAa,QAAQ,SAAS,CACpC,CAAK,EAED9/M,EAAU,GAAG,iBAAkB,UAAY,CACzC,IAAI8/M,EAAeloN,EAAK,wBAExB,GAAIkoN,EAAa,SAAW,EAI5B,KAAIniN,EAAOi/M,EAAM,QAAQkD,EAAa,GAAI,MAAM,EAE5CA,EAAa,SAAS,mCAAmC,EAC3DloN,EAAK,QAAQ,QAAS,EAAE,EAExBA,EAAK,QAAQ,SAAU,CACrB,KAAM+F,CAChB,CAAS,EAET,CAAK,EAEDqC,EAAU,GAAG,mBAAoB,UAAY,CAC3C,IAAI8/M,EAAeloN,EAAK,wBAEpBqrM,EAAWrrM,EAAK,SAAS,KAAK,sCAAsC,EAEpEmoN,EAAe9c,EAAS,MAAM6c,CAAY,EAI9C,GAAI,KAAgB,GAIpB,KAAIvmM,EAAYwmM,EAAe,EAG3BD,EAAa,SAAW,IAC1BvmM,EAAY,GAGd,IAAIymM,EAAQ/c,EAAS,GAAG1pL,CAAS,EAEjCymM,EAAM,QAAQ,YAAY,EAE1B,IAAIC,EAAgBroN,EAAK,SAAS,OAAM,EAAG,IACvCsoN,GAAUF,EAAM,OAAM,EAAG,IACzBG,GAAavoN,EAAK,SAAS,UAAS,GAAMsoN,GAAUD,GAEpD1mM,IAAc,EAChB3hB,EAAK,SAAS,UAAU,CAAC,EAChBsoN,GAAUD,EAAgB,GACnCroN,EAAK,SAAS,UAAUuoN,EAAU,EAE1C,CAAK,EAEDngN,EAAU,GAAG,eAAgB,UAAY,CACvC,IAAI8/M,EAAeloN,EAAK,wBAEpBqrM,EAAWrrM,EAAK,SAAS,KAAK,sCAAsC,EAEpEmoN,EAAe9c,EAAS,MAAM6c,CAAY,EAE1CvmM,EAAYwmM,EAAe,EAG/B,GAAI,KAAa9c,EAAS,QAI1B,KAAI+c,EAAQ/c,EAAS,GAAG1pL,CAAS,EAEjCymM,EAAM,QAAQ,YAAY,EAE1B,IAAIC,EAAgBroN,EAAK,SAAS,OAAQ,EAAC,IACzCA,EAAK,SAAS,YAAY,EAAK,EAC7BwoN,GAAaJ,EAAM,OAAQ,EAAC,IAAMA,EAAM,YAAY,EAAK,EACzDG,GAAavoN,EAAK,SAAS,UAAW,EAAGwoN,GAAaH,EAEtD1mM,IAAc,EAChB3hB,EAAK,SAAS,UAAU,CAAC,EAChBwoN,GAAaH,GACtBroN,EAAK,SAAS,UAAUuoN,EAAU,EAE1C,CAAK,EAEDngN,EAAU,GAAG,gBAAiB,SAAU+jB,EAAQ,CAC9CA,EAAO,QAAQ,GAAG,UAAU,IAAI,sCAAsC,EACtEA,EAAO,QAAQ,GAAG,aAAa,gBAAiB,MAAM,CAC5D,CAAK,EAED/jB,EAAU,GAAG,kBAAmB,SAAU+jB,EAAQ,CAChDnsB,EAAK,eAAemsB,CAAM,CAChC,CAAK,EAEGgxC,EAAE,GAAG,YACP,KAAK,SAAS,GAAG,aAAc,SAAU53C,EAAG,CAC1C,IAAIsgC,EAAM7lD,EAAK,SAAS,UAAS,EAE7B8lD,EAAS9lD,EAAK,SAAS,IAAI,CAAC,EAAE,aAAe6lD,EAAMtgC,EAAE,OAErDkjM,EAAUljM,EAAE,OAAS,GAAKsgC,EAAMtgC,EAAE,QAAU,EAC5CmjM,EAAanjM,EAAE,OAAS,GAAKugC,GAAU9lD,EAAK,SAAS,SAErDyoN,GACFzoN,EAAK,SAAS,UAAU,CAAC,EAEzBulB,EAAE,eAAc,EAChBA,EAAE,gBAAe,GACRmjM,IACT1oN,EAAK,SAAS,UACZA,EAAK,SAAS,IAAI,CAAC,EAAE,aAAeA,EAAK,SAAS,OAAQ,CACtE,EAEUulB,EAAE,eAAc,EAChBA,EAAE,gBAAe,EAE3B,CAAO,EAGH,KAAK,SAAS,GAAG,UAAW,uCAC1B,SAAUk7C,EAAK,CACf,IAAI6nH,EAAQnrH,EAAE,IAAI,EAEdp3D,EAAOi/M,EAAM,QAAQ,KAAM,MAAM,EAErC,GAAI18B,EAAM,SAAS,mCAAmC,EAAG,CACnDtoL,EAAK,QAAQ,IAAI,UAAU,EAC7BA,EAAK,QAAQ,WAAY,CACvB,cAAeygE,EACf,KAAM16D,CAClB,CAAW,EAED/F,EAAK,QAAQ,QAAS,EAAE,EAG1B,MACD,CAEDA,EAAK,QAAQ,SAAU,CACrB,cAAeygE,EACf,KAAM16D,CACd,CAAO,CACP,CAAK,EAED,KAAK,SAAS,GAAG,aAAc,uCAC7B,SAAU06D,EAAK,CACf,IAAI16D,EAAOi/M,EAAM,QAAQ,KAAM,MAAM,EAErChlN,EAAK,sBAAuB,EACvB,YAAY,sCAAsC,EAClD,KAAK,gBAAiB,OAAO,EAElCA,EAAK,QAAQ,gBAAiB,CAC5B,KAAM+F,EACN,QAASo3D,EAAE,IAAI,CACvB,CAAO,CACP,CAAK,CACL,EAEE4pJ,EAAQ,UAAU,sBAAwB,UAAY,CACpD,IAAImB,EAAe,KAAK,SACvB,KAAK,uCAAuC,EAE7C,OAAOA,CACX,EAEEnB,EAAQ,UAAU,QAAU,UAAY,CACtC,KAAK,SAAS,QAClB,EAEEA,EAAQ,UAAU,uBAAyB,UAAY,CACrD,IAAImB,EAAe,KAAK,wBAExB,GAAIA,EAAa,SAAW,EAI5B,KAAI7c,EAAW,KAAK,SAAS,KAAK,sCAAsC,EAEpE8c,EAAe9c,EAAS,MAAM6c,CAAY,EAE1CG,EAAgB,KAAK,SAAS,OAAM,EAAG,IACvCC,EAAUJ,EAAa,OAAM,EAAG,IAChCK,EAAa,KAAK,SAAS,UAAS,GAAMD,EAAUD,GAEpDM,EAAcL,EAAUD,EAC5BE,GAAcL,EAAa,YAAY,EAAK,EAAI,EAE5CC,GAAgB,EAClB,KAAK,SAAS,UAAU,CAAC,GAChBQ,EAAc,KAAK,SAAS,YAAa,GAAIA,EAAc,IACpE,KAAK,SAAS,UAAUJ,CAAU,EAExC,EAEExB,EAAQ,UAAU,SAAW,SAAUrsN,EAAQ0N,EAAW,CACxD,IAAIud,EAAW,KAAK,QAAQ,IAAI,gBAAgB,EAC5CwhM,EAAe,KAAK,QAAQ,IAAI,cAAc,EAE9C5iM,EAAUoB,EAASjrB,EAAQ0N,CAAS,EAEpCmc,GAAW,KACbnc,EAAU,MAAM,QAAU,OACjB,OAAOmc,GAAY,SAC5Bnc,EAAU,UAAY++M,EAAa5iM,CAAO,EAE1C44C,EAAE/0D,CAAS,EAAE,OAAOmc,CAAO,CAEjC,EAESwiM,CACT,CAAC,EAEDvE,EAAG,OAAO,eAAe,CAEzB,EAAG,UAAY,CACb,IAAIoG,EAAO,CACT,UAAW,EACX,IAAK,EACL,MAAO,GACP,MAAO,GACP,KAAM,GACN,IAAK,GACL,IAAK,GACL,MAAO,GACP,QAAS,GACT,UAAW,GACX,IAAK,GACL,KAAM,GACN,KAAM,GACN,GAAI,GACJ,MAAO,GACP,KAAM,GACN,OAAQ,EACZ,EAEE,OAAOA,CACT,CAAC,EAEDpG,EAAG,OAAO,yBAAyB,CACjC,SACA,WACA,SACF,EAAG,SAAUrlJ,EAAG6nJ,EAAO4D,EAAM,CAC3B,SAASC,EAAe7B,EAAUziN,EAAS,CACzC,KAAK,SAAWyiN,EAChB,KAAK,QAAUziN,EAEfskN,EAAc,UAAU,YAAY,KAAK,IAAI,CAC9C,CAED,SAAM,OAAOA,EAAe7D,EAAM,UAAU,EAE5C6D,EAAc,UAAU,OAAS,UAAY,CAC3C,IAAIC,EAAa3rJ,EACf,qGAGN,EAEI,YAAK,UAAY,EAEb6nJ,EAAM,QAAQ,KAAK,SAAS,GAAI,cAAc,GAAK,KACrD,KAAK,UAAYA,EAAM,QAAQ,KAAK,SAAS,GAAI,cAAc,EACtD,KAAK,SAAS,KAAK,UAAU,GAAK,OAC3C,KAAK,UAAY,KAAK,SAAS,KAAK,UAAU,GAGhD8D,EAAW,KAAK,QAAS,KAAK,SAAS,KAAK,OAAO,CAAC,EACpDA,EAAW,KAAK,WAAY,KAAK,SAAS,EAC1CA,EAAW,KAAK,gBAAiB,OAAO,EAExC,KAAK,WAAaA,EAEXA,CACX,EAEED,EAAc,UAAU,KAAO,SAAUzgN,EAAW6/M,EAAY,CAC9D,IAAIjoN,EAAO,KAEP+oN,EAAY3gN,EAAU,GAAK,WAE/B,KAAK,UAAYA,EAEjB,KAAK,WAAW,GAAG,QAAS,SAAUq4D,EAAK,CACzCzgE,EAAK,QAAQ,QAASygE,CAAG,CAC/B,CAAK,EAED,KAAK,WAAW,GAAG,OAAQ,SAAUA,EAAK,CACxCzgE,EAAK,YAAYygE,CAAG,CAC1B,CAAK,EAED,KAAK,WAAW,GAAG,UAAW,SAAUA,EAAK,CAC3CzgE,EAAK,QAAQ,WAAYygE,CAAG,EAExBA,EAAI,QAAUmoJ,EAAK,OACrBnoJ,EAAI,eAAc,CAE1B,CAAK,EAEDr4D,EAAU,GAAG,gBAAiB,SAAU+jB,EAAQ,CAC9CnsB,EAAK,WAAW,KAAK,wBAAyBmsB,EAAO,KAAK,SAAS,CACzE,CAAK,EAED/jB,EAAU,GAAG,mBAAoB,SAAU+jB,EAAQ,CACjDnsB,EAAK,OAAOmsB,EAAO,IAAI,CAC7B,CAAK,EAED/jB,EAAU,GAAG,OAAQ,UAAY,CAE/BpI,EAAK,WAAW,KAAK,gBAAiB,MAAM,EAC5CA,EAAK,WAAW,KAAK,YAAa+oN,CAAS,EAE3C/oN,EAAK,oBAAoBoI,CAAS,CACxC,CAAK,EAEDA,EAAU,GAAG,QAAS,UAAY,CAEhCpI,EAAK,WAAW,KAAK,gBAAiB,OAAO,EAC7CA,EAAK,WAAW,WAAW,uBAAuB,EAClDA,EAAK,WAAW,WAAW,WAAW,EAEtCA,EAAK,WAAW,QAAQ,OAAO,EAE/BA,EAAK,oBAAoBoI,CAAS,CACxC,CAAK,EAEDA,EAAU,GAAG,SAAU,UAAY,CACjCpI,EAAK,WAAW,KAAK,WAAYA,EAAK,SAAS,EAC/CA,EAAK,WAAW,KAAK,gBAAiB,OAAO,CACnD,CAAK,EAEDoI,EAAU,GAAG,UAAW,UAAY,CAClCpI,EAAK,WAAW,KAAK,WAAY,IAAI,EACrCA,EAAK,WAAW,KAAK,gBAAiB,MAAM,CAClD,CAAK,CACL,EAEE6oN,EAAc,UAAU,YAAc,SAAUpoJ,EAAK,CACnD,IAAIzgE,EAAO,KAIX,OAAO,WAAW,UAAY,CAGzB,SAAS,eAAiBA,EAAK,WAAW,IAC1Cm9D,EAAE,SAASn9D,EAAK,WAAW,GAAI,SAAS,aAAa,GAKxDA,EAAK,QAAQ,OAAQygE,CAAG,CACzB,EAAE,CAAC,CACR,EAEEooJ,EAAc,UAAU,oBAAsB,SAAUzgN,EAAW,CAEjE+0D,EAAE,SAAS,IAAI,EAAE,GAAG,qBAAuB/0D,EAAU,GAAI,SAAUmd,EAAG,CACpE,IAAIyjM,EAAU7rJ,EAAE53C,EAAE,MAAM,EAEpB0jM,EAAUD,EAAQ,QAAQ,UAAU,EAEpCE,EAAO/rJ,EAAE,kCAAkC,EAE/C+rJ,EAAK,KAAK,UAAY,CACpB,GAAI,MAAQD,EAAQ,GAIpB,KAAIjC,EAAWhC,EAAM,QAAQ,KAAM,SAAS,EAE5CgC,EAAS,QAAQ,OAAO,EAChC,CAAO,CACP,CAAK,CACL,EAEE6B,EAAc,UAAU,oBAAsB,SAAUzgN,EAAW,CACjE+0D,EAAE,SAAS,IAAI,EAAE,IAAI,qBAAuB/0D,EAAU,EAAE,CAC5D,EAEEygN,EAAc,UAAU,SAAW,SAAUC,EAAYb,EAAY,CACnE,IAAIkB,EAAsBlB,EAAW,KAAK,YAAY,EACtDkB,EAAoB,OAAOL,CAAU,CACzC,EAEED,EAAc,UAAU,QAAU,UAAY,CAC5C,KAAK,oBAAoB,KAAK,SAAS,CAC3C,EAEEA,EAAc,UAAU,OAAS,SAAU9iN,EAAM,CAC/C,MAAM,IAAI,MAAM,uDAAuD,CAC3E,EASE8iN,EAAc,UAAU,UAAY,UAAY,CAC9C,MAAO,CAAC,KAAK,YACjB,EAQEA,EAAc,UAAU,WAAa,UAAY,CAC/C,OAAO,KAAK,QAAQ,IAAI,UAAU,CACtC,EAESA,CACT,CAAC,EAEDrG,EAAG,OAAO,2BAA2B,CACnC,SACA,SACA,WACA,SACF,EAAG,SAAUrlJ,EAAG0rJ,EAAe7D,EAAO4D,EAAM,CAC1C,SAASQ,GAAmB,CAC1BA,EAAgB,UAAU,YAAY,MAAM,KAAM,SAAS,CAC5D,CAED,SAAM,OAAOA,EAAiBP,CAAa,EAE3CO,EAAgB,UAAU,OAAS,UAAY,CAC7C,IAAIN,EAAaM,EAAgB,UAAU,OAAO,KAAK,IAAI,EAE3D,SAAW,GAAG,UAAU,IAAI,2BAA2B,EAEvDN,EAAW,KACT,gJAIN,EAEWA,CACX,EAEEM,EAAgB,UAAU,KAAO,SAAUhhN,EAAW6/M,EAAY,CAChE,IAAIjoN,EAAO,KAEXopN,EAAgB,UAAU,KAAK,MAAM,KAAM,SAAS,EAEpD,IAAIrnN,EAAKqG,EAAU,GAAK,aAExB,KAAK,WAAW,KAAK,8BAA8B,EAChD,KAAK,KAAMrG,CAAE,EACb,KAAK,OAAQ,SAAS,EACtB,KAAK,gBAAiB,MAAM,EAC/B,KAAK,WAAW,KAAK,kBAAmBA,CAAE,EAC1C,KAAK,WAAW,KAAK,gBAAiBA,CAAE,EAExC,KAAK,WAAW,GAAG,YAAa,SAAU0+D,EAAK,CAEzCA,EAAI,QAAU,GAIlBzgE,EAAK,QAAQ,SAAU,CACrB,cAAeygE,CACvB,CAAO,CACP,CAAK,EAED,KAAK,WAAW,GAAG,QAAS,SAAUA,EAAK,CAE/C,CAAK,EAED,KAAK,WAAW,GAAG,OAAQ,SAAUA,EAAK,CAE9C,CAAK,EAEDr4D,EAAU,GAAG,QAAS,SAAUq4D,EAAK,CAC9Br4D,EAAU,UACbpI,EAAK,WAAW,QAAQ,OAAO,CAEvC,CAAK,CACL,EAEEopN,EAAgB,UAAU,MAAQ,UAAY,CAC5C,IAAIC,EAAY,KAAK,WAAW,KAAK,8BAA8B,EACnEA,EAAU,MAAK,EACfA,EAAU,WAAW,OAAO,CAChC,EAEED,EAAgB,UAAU,QAAU,SAAUrjN,EAAMqC,EAAW,CAC7D,IAAIud,EAAW,KAAK,QAAQ,IAAI,mBAAmB,EAC/CwhM,EAAe,KAAK,QAAQ,IAAI,cAAc,EAElD,OAAOA,EAAaxhM,EAAS5f,EAAMqC,CAAS,CAAC,CACjD,EAEEghN,EAAgB,UAAU,mBAAqB,UAAY,CACzD,OAAOjsJ,EAAE,eAAe,CAC5B,EAEEisJ,EAAgB,UAAU,OAAS,SAAUrjN,EAAM,CACjD,GAAIA,EAAK,SAAW,EAAG,CACrB,KAAK,MAAK,EACV,MACD,CAED,IAAI+xH,EAAY/xH,EAAK,GAEjBsjN,EAAY,KAAK,WAAW,KAAK,8BAA8B,EAC/D/mD,EAAY,KAAK,QAAQxqC,EAAWuxF,CAAS,EAEjDA,EAAU,MAAK,EAAG,OAAO/mD,CAAS,EAElC,IAAIvrF,EAAQ+gD,EAAU,OAASA,EAAU,KAErC/gD,EACFsyI,EAAU,KAAK,QAAStyI,CAAK,EAE7BsyI,EAAU,WAAW,OAAO,CAElC,EAESD,CACT,CAAC,EAED5G,EAAG,OAAO,6BAA6B,CACrC,SACA,SACA,UACF,EAAG,SAAUrlJ,EAAG0rJ,EAAe7D,EAAO,CACpC,SAASsE,EAAmBtC,EAAUziN,EAAS,CAC7C+kN,EAAkB,UAAU,YAAY,MAAM,KAAM,SAAS,CAC9D,CAED,SAAM,OAAOA,EAAmBT,CAAa,EAE7CS,EAAkB,UAAU,OAAS,UAAY,CAC/C,IAAIR,EAAaQ,EAAkB,UAAU,OAAO,KAAK,IAAI,EAE7D,SAAW,GAAG,UAAU,IAAI,6BAA6B,EAEzDR,EAAW,KACT,+CACN,EAEWA,CACX,EAEEQ,EAAkB,UAAU,KAAO,SAAUlhN,EAAW6/M,EAAY,CAClE,IAAIjoN,EAAO,KAEXspN,EAAkB,UAAU,KAAK,MAAM,KAAM,SAAS,EAEtD,IAAIvnN,EAAKqG,EAAU,GAAK,aACxB,KAAK,WAAW,KAAK,8BAA8B,EAAE,KAAK,KAAMrG,CAAE,EAElE,KAAK,WAAW,GAAG,QAAS,SAAU0+D,EAAK,CACzCzgE,EAAK,QAAQ,SAAU,CACrB,cAAeygE,CACvB,CAAO,CACP,CAAK,EAED,KAAK,WAAW,GACd,QACA,qCACA,SAAUA,EAAK,CAEb,GAAI,GAAK,aAIT,KAAI8oJ,EAAUpsJ,EAAE,IAAI,EAChB2rJ,EAAaS,EAAQ,SAErBxjN,EAAOi/M,EAAM,QAAQ8D,EAAW,GAAI,MAAM,EAE9C9oN,EAAK,QAAQ,WAAY,CACvB,cAAeygE,EACf,KAAM16D,CAChB,CAAS,EACF,CACP,EAEI,KAAK,WAAW,GACd,UACA,qCACA,SAAU06D,EAAK,CAETzgE,EAAK,cAITygE,EAAI,gBAAe,CACpB,CACP,CACA,EAEE6oJ,EAAkB,UAAU,MAAQ,UAAY,CAC9C,IAAID,EAAY,KAAK,WAAW,KAAK,8BAA8B,EACnEA,EAAU,MAAK,EACfA,EAAU,WAAW,OAAO,CAChC,EAEEC,EAAkB,UAAU,QAAU,SAAUvjN,EAAMqC,EAAW,CAC/D,IAAIud,EAAW,KAAK,QAAQ,IAAI,mBAAmB,EAC/CwhM,EAAe,KAAK,QAAQ,IAAI,cAAc,EAElD,OAAOA,EAAaxhM,EAAS5f,EAAMqC,CAAS,CAAC,CACjD,EAEEkhN,EAAkB,UAAU,mBAAqB,UAAY,CAC3D,IAAIrB,EAAa9qJ,EACf,mOAON,EAEI,OAAO8qJ,CACX,EAEEqB,EAAkB,UAAU,OAAS,SAAUvjN,EAAM,CAGnD,GAFA,KAAK,MAAK,EAENA,EAAK,SAAW,EASpB,SALIyjN,EAAc,GAEdC,EAAoB,KAAK,WAAW,KAAK,8BAA8B,EACxE,KAAK,IAAI,EAAI,WAEPxwF,EAAI,EAAGA,EAAIlzH,EAAK,OAAQkzH,IAAK,CACpC,IAAInB,EAAY/xH,EAAKkzH,GAEjB6vF,EAAa,KAAK,qBAClBxmD,EAAY,KAAK,QAAQxqC,EAAWgxF,CAAU,EAE9CY,EAAcD,EAAoBzE,EAAM,cAAc,CAAC,EAAI,IAE3DltF,EAAU,GACZ4xF,GAAe5xF,EAAU,GAEzB4xF,GAAe1E,EAAM,cAAc,CAAC,EAGtC8D,EAAW,KAAK,qCAAqC,EAClD,OAAOxmD,CAAS,EAChB,KAAK,KAAMonD,CAAW,EAEzB,IAAI3yI,EAAQ+gD,EAAU,OAASA,EAAU,KAErC/gD,GACF+xI,EAAW,KAAK,QAAS/xI,CAAK,EAGhC,IAAI4yI,GAAa,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAI,YAAY,EAE9DJ,GAAUT,EAAW,KAAK,oCAAoC,EAElES,GAAQ,KAAK,QAASI,GAAY,GAClCJ,GAAQ,KAAK,aAAcI,GAAY,GACvCJ,GAAQ,KAAK,mBAAoBG,CAAW,EAE5C1E,EAAM,UAAU8D,EAAW,GAAI,OAAQhxF,CAAS,EAEhD0xF,EAAY,KAAKV,CAAU,CAC5B,CAED,IAAIO,GAAY,KAAK,WAAW,KAAK,8BAA8B,EAEnEA,GAAU,OAAOG,CAAW,EAChC,EAESF,CACT,CAAC,EAED9G,EAAG,OAAO,gCAAgC,CAE1C,EAAG,UAAY,CACb,SAASoH,EAAaC,EAAW7C,EAAUziN,EAAS,CAClD,KAAK,YAAc,KAAK,qBAAqBA,EAAQ,IAAI,aAAa,CAAC,EAEvEslN,EAAU,KAAK,KAAM7C,EAAUziN,CAAO,CACvC,CAED,SAAY,UAAU,qBAAuB,SAAUxP,EAAG+V,EAAa,CACrE,OAAI,OAAOA,GAAgB,WACzBA,EAAc,CACZ,GAAI,GACJ,KAAMA,CACd,GAGWA,CACX,EAEE8+M,EAAY,UAAU,kBAAoB,SAAUC,EAAW/+M,EAAa,CAC1E,IAAIg/M,EAAe,KAAK,qBAExBA,EAAa,KAAK,KAAK,QAAQh/M,CAAW,CAAC,EAC3Cg/M,EAAa,GAAG,UAAU,IAAI,gCAAgC,EAC9DA,EAAa,GAAG,UAAU,OAAO,2BAA2B,EAE5D,IAAIC,EAAmBj/M,EAAY,OACjCA,EAAY,MACZg/M,EAAa,KAAI,EAEnB,YAAK,WAAW,KAAK,8BAA8B,EAAE,KACnD,QACAC,CACN,EAEWD,CACX,EAEEF,EAAY,UAAU,OAAS,SAAUC,EAAW9jN,EAAM,CACxD,IAAIikN,EACFjkN,EAAK,QAAU,GAAKA,EAAK,GAAG,IAAM,KAAK,YAAY,GAEjDkkN,EAAqBlkN,EAAK,OAAS,EAEvC,GAAIkkN,GAAsBD,EACxB,OAAOH,EAAU,KAAK,KAAM9jN,CAAI,EAGlC,KAAK,MAAK,EAEV,IAAI+jN,EAAe,KAAK,kBAAkB,KAAK,WAAW,EAE1D,KAAK,WAAW,KAAK,8BAA8B,EAAE,OAAOA,CAAY,CAC5E,EAESF,CACT,CAAC,EAEDpH,EAAG,OAAO,+BAA+B,CACvC,SACA,UACA,UACF,EAAG,SAAUrlJ,EAAGyrJ,EAAM5D,EAAO,CAC3B,SAASkF,GAAc,CAAG,CAE1B,SAAW,UAAU,KAAO,SAAUL,EAAWzhN,EAAW6/M,EAAY,CACtE,IAAIjoN,EAAO,KAEX6pN,EAAU,KAAK,KAAMzhN,EAAW6/M,CAAU,EAEtC,KAAK,aAAe,MAClB,KAAK,QAAQ,IAAI,OAAO,GAAK,OAAO,SAAW,QAAQ,OACzD,QAAQ,MACN,+FAEV,EAII,KAAK,WAAW,GAAG,YAAa,4BAC9B,SAAUxnJ,EAAK,CACbzgE,EAAK,aAAaygE,CAAG,CAC7B,CAAK,EAEDr4D,EAAU,GAAG,WAAY,SAAUq4D,EAAK,CACtCzgE,EAAK,qBAAqBygE,EAAKr4D,CAAS,CAC9C,CAAK,CACL,EAEE8hN,EAAW,UAAU,aAAe,SAAUn1N,EAAG0rE,EAAK,CAEpD,GAAI,MAAK,aAIT,KAAI0pJ,EAAS,KAAK,WAAW,KAAK,2BAA2B,EAG7D,GAAIA,EAAO,SAAW,EAItB,GAAI,gBAAe,EAEnB,IAAIpkN,EAAOi/M,EAAM,QAAQmF,EAAO,GAAI,MAAM,EAEtCC,EAAc,KAAK,SAAS,IAAG,EACnC,KAAK,SAAS,IAAI,KAAK,YAAY,EAAE,EAErC,IAAIC,EAAe,CACjB,KAAMtkN,CACZ,EAEI,GADA,KAAK,QAAQ,QAASskN,CAAY,EAC9BA,EAAa,UAAW,CAC1B,KAAK,SAAS,IAAID,CAAW,EAC7B,MACD,CAED,QAASnxF,EAAI,EAAGA,EAAIlzH,EAAK,OAAQkzH,IAU/B,GATAoxF,EAAe,CACb,KAAMtkN,EAAKkzH,EACnB,EAIM,KAAK,QAAQ,WAAYoxF,CAAY,EAGjCA,EAAa,UAAW,CAC1B,KAAK,SAAS,IAAID,CAAW,EAC7B,MACD,CAGH,KAAK,SAAS,QAAQ,OAAO,EAAE,QAAQ,QAAQ,EAE/C,KAAK,QAAQ,SAAU,EAAE,GAC7B,EAEEF,EAAW,UAAU,qBAAuB,SAAUn1N,EAAG0rE,EAAKr4D,EAAW,CACnEA,EAAU,WAIVq4D,EAAI,OAASmoJ,EAAK,QAAUnoJ,EAAI,OAASmoJ,EAAK,YAChD,KAAK,aAAanoJ,CAAG,CAE3B,EAEEypJ,EAAW,UAAU,OAAS,SAAUL,EAAW9jN,EAAM,CAMvD,GALA8jN,EAAU,KAAK,KAAM9jN,CAAI,EAEzB,KAAK,WAAW,KAAK,2BAA2B,EAAE,OAAM,EACxD,KAAK,WAAW,GAAG,UAAU,OAAO,8BAA8B,EAE9D,OAAK,WAAW,KAAK,iCAAiC,EAAE,OAAS,GACjEA,EAAK,SAAW,GAIpB,KAAI2jN,EAAc,KAAK,WAAW,KAAK,8BAA8B,EAClE,KAAK,IAAI,EAERY,EAAY,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAI,gBAAgB,EAEjEf,EAAUpsJ,EACZ,uHAGN,EACIosJ,EAAQ,KAAK,QAASe,EAAW,GACjCf,EAAQ,KAAK,aAAce,EAAW,GACtCf,EAAQ,KAAK,mBAAoBG,CAAW,EAC5C1E,EAAM,UAAUuE,EAAQ,GAAI,OAAQxjN,CAAI,EAExC,KAAK,WAAW,QAAQwjN,CAAO,EAC/B,KAAK,WAAW,GAAG,UAAU,IAAI,8BAA8B,EACnE,EAESW,CACT,CAAC,EAED1H,EAAG,OAAO,2BAA2B,CACnC,SACA,WACA,SACF,EAAG,SAAUrlJ,EAAG6nJ,EAAO4D,EAAM,CAC3B,SAAS2B,EAAQV,EAAW7C,EAAUziN,EAAS,CAC7CslN,EAAU,KAAK,KAAM7C,EAAUziN,CAAO,CACvC,CAED,SAAO,UAAU,OAAS,SAAUslN,EAAW,CAC7C,IAAIW,EAAc,KAAK,QAAQ,IAAI,cAAc,EAAE,IAAI,QAAQ,EAC3DC,EAAUttJ,EACZ,kPAON,EAEI,KAAK,iBAAmBstJ,EACxB,KAAK,QAAUA,EAAQ,KAAK,UAAU,EAEtC,KAAK,QAAQ,KAAK,eAAgB,KAAK,QAAQ,IAAI,cAAc,CAAC,EAClE,KAAK,QAAQ,KAAK,aAAcD,EAAa,GAE7C,IAAInB,EAAYQ,EAAU,KAAK,IAAI,EAEnC,YAAK,kBAAiB,EACtBR,EAAU,OAAO,KAAK,gBAAgB,EAE/BA,CACX,EAEEkB,EAAO,UAAU,KAAO,SAAUV,EAAWzhN,EAAW6/M,EAAY,CAClE,IAAIjoN,EAAO,KAEP+oN,EAAY3gN,EAAU,GAAK,WAC3BshN,EAActhN,EAAU,GAAK,aAEjCyhN,EAAU,KAAK,KAAMzhN,EAAW6/M,CAAU,EAE1CjoN,EAAK,QAAQ,KAAK,mBAAoB0pN,CAAW,EAEjDthN,EAAU,GAAG,OAAQ,UAAY,CAC/BpI,EAAK,QAAQ,KAAK,gBAAiB+oN,CAAS,EAC5C/oN,EAAK,QAAQ,QAAQ,OAAO,CAClC,CAAK,EAEDoI,EAAU,GAAG,QAAS,UAAY,CAChCpI,EAAK,QAAQ,IAAI,EAAE,EACnBA,EAAK,aAAY,EACjBA,EAAK,QAAQ,WAAW,eAAe,EACvCA,EAAK,QAAQ,WAAW,uBAAuB,EAC/CA,EAAK,QAAQ,QAAQ,OAAO,CAClC,CAAK,EAEDoI,EAAU,GAAG,SAAU,UAAY,CACjCpI,EAAK,QAAQ,KAAK,WAAY,EAAK,EAEnCA,EAAK,kBAAiB,CAC5B,CAAK,EAEDoI,EAAU,GAAG,UAAW,UAAY,CAClCpI,EAAK,QAAQ,KAAK,WAAY,EAAI,CACxC,CAAK,EAEDoI,EAAU,GAAG,QAAS,SAAUq4D,EAAK,CACnCzgE,EAAK,QAAQ,QAAQ,OAAO,CAClC,CAAK,EAEDoI,EAAU,GAAG,gBAAiB,SAAU+jB,EAAQ,CAC1CA,EAAO,KAAK,UACdnsB,EAAK,QAAQ,KAAK,wBAAyBmsB,EAAO,KAAK,SAAS,EAEhEnsB,EAAK,QAAQ,WAAW,uBAAuB,CAEvD,CAAK,EAED,KAAK,WAAW,GAAG,UAAW,0BAA2B,SAAUygE,EAAK,CACtEzgE,EAAK,QAAQ,QAASygE,CAAG,CAC/B,CAAK,EAED,KAAK,WAAW,GAAG,WAAY,0BAA2B,SAAUA,EAAK,CACvEzgE,EAAK,YAAYygE,CAAG,CAC1B,CAAK,EAED,KAAK,WAAW,GAAG,UAAW,0BAA2B,SAAUA,EAAK,CACtEA,EAAI,gBAAe,EAEnBzgE,EAAK,QAAQ,WAAYygE,CAAG,EAE5BzgE,EAAK,gBAAkBygE,EAAI,qBAE3B,IAAIhvE,GAAMgvE,EAAI,MAEd,GAAIhvE,KAAQm3N,EAAK,WAAa5oN,EAAK,QAAQ,IAAK,IAAK,GAAI,CACvD,IAAI0qN,GAAkB1qN,EAAK,WACxB,KAAK,4BAA4B,EAAE,OAEtC,GAAI0qN,GAAgB,OAAS,EAAG,CAC9B,IAAIr5N,GAAO2zN,EAAM,QAAQ0F,GAAgB,GAAI,MAAM,EAEnD1qN,EAAK,mBAAmB3O,EAAI,EAE5BovE,EAAI,eAAc,CACnB,CACF,CACP,CAAK,EAED,KAAK,WAAW,GAAG,QAAS,0BAA2B,SAAUA,EAAK,CAChEzgE,EAAK,QAAQ,OACfygE,EAAI,gBAAe,CAE3B,CAAK,EAOD,IAAI33B,EAAO,SAAS,aAChB6hL,EAAqB7hL,GAAQA,GAAQ,GAKzC,KAAK,WAAW,GACd,oBACA,0BACA,SAAU23B,EAAK,CAIb,GAAIkqJ,EAAoB,CACtB3qN,EAAK,WAAW,IAAI,gCAAgC,EACpD,MACD,CAGDA,EAAK,WAAW,IAAI,cAAc,CACnC,CACP,EAEI,KAAK,WAAW,GACd,4BACA,0BACA,SAAUygE,EAAK,CAIb,GAAIkqJ,GAAsBlqJ,EAAI,OAAS,QAAS,CAC9CzgE,EAAK,WAAW,IAAI,gCAAgC,EACpD,MACD,CAED,IAAIvO,GAAMgvE,EAAI,MAGVhvE,IAAOm3N,EAAK,OAASn3N,IAAOm3N,EAAK,MAAQn3N,IAAOm3N,EAAK,KAKrDn3N,IAAOm3N,EAAK,KAIhB5oN,EAAK,aAAaygE,CAAG,CACtB,CACP,CACA,EASE8pJ,EAAO,UAAU,kBAAoB,SAAUV,EAAW,CACxD,KAAK,QAAQ,KAAK,WAAY,KAAK,WAAW,KAAK,UAAU,CAAC,EAC9D,KAAK,WAAW,KAAK,WAAY,IAAI,CACzC,EAEEU,EAAO,UAAU,kBAAoB,SAAUV,EAAW/+M,EAAa,CACrE,KAAK,QAAQ,KAAK,cAAeA,EAAY,IAAI,CACrD,EAEEy/M,EAAO,UAAU,OAAS,SAAUV,EAAW9jN,EAAM,CACnD,IAAI6kN,EAAiB,KAAK,QAAQ,IAAM,SAAS,cAEjD,KAAK,QAAQ,KAAK,cAAe,EAAE,EAEnCf,EAAU,KAAK,KAAM9jN,CAAI,EAEzB,KAAK,aAAY,EACb6kN,GACF,KAAK,QAAQ,QAAQ,OAAO,CAElC,EAEEL,EAAO,UAAU,aAAe,UAAY,CAG1C,GAFA,KAAK,aAAY,EAEb,CAAC,KAAK,gBAAiB,CACzB,IAAIroG,EAAQ,KAAK,QAAQ,IAAG,EAE5B,KAAK,QAAQ,QAAS,CACpB,KAAMA,CACd,CAAO,CACF,CAED,KAAK,gBAAkB,EAC3B,EAEEqoG,EAAO,UAAU,mBAAqB,SAAUV,EAAWx4N,EAAM,CAC/D,KAAK,QAAQ,WAAY,CACvB,KAAMA,CACZ,CAAK,EAED,KAAK,QAAQ,IAAIA,EAAK,IAAI,EAC1B,KAAK,aAAY,CACrB,EAEEk5N,EAAO,UAAU,aAAe,UAAY,CAC1C,KAAK,QAAQ,IAAI,QAAS,MAAM,EAEhC,IAAIjhK,EAAQ,OAEZ,GAAI,KAAK,QAAQ,KAAK,aAAa,IAAM,GAAI,CAC3C,IAAIuhK,EAAe,KAAK,QAAQ,IAAK,EAAC,OAAS,EAE/CvhK,EAASuhK,EAAe,IAAQ,IACjC,CAED,KAAK,QAAQ,IAAI,QAASvhK,CAAK,CACnC,EAESihK,CACT,CAAC,EAED/H,EAAG,OAAO,iCAAiC,CACzC,UACF,EAAG,SAAUwC,EAAO,CAClB,SAAS8F,GAAgB,CAAG,CAE5B,SAAa,UAAU,OAAS,SAAUjB,EAAW,CACnD,IAAIf,EAAae,EAAU,KAAK,IAAI,EAEhCkB,EAAoB,KAAK,QAAQ,IAAI,mBAAmB,GAAK,GAEjE,OAAIA,EAAkB,QAAQ,OAAO,IAAM,KACzCA,EAAoBA,EAAkB,QAAQ,QAAS,EAAE,EAEzD/F,EAAM,0BAA0B8D,EAAW,GAAI,KAAK,SAAS,EAAE,GAGjEA,EAAW,SAASiC,CAAiB,EAE9BjC,CACX,EAESgC,CACT,CAAC,EAEDtI,EAAG,OAAO,+BAA+B,CACvC,QACF,EAAG,SAAUrlJ,EAAG,CACd,SAAS6tJ,GAAc,CAAG,CAE1B,SAAW,UAAU,KAAO,SAAUnB,EAAWzhN,EAAW6/M,EAAY,CACtE,IAAIjoN,EAAO,KACPirN,EAAc,CAChB,OAAQ,UACR,QAAS,UACT,SAAU,YACV,WAAY,cACZ,QAAS,UACf,EAEQC,EAAoB,CACtB,UAAW,UAAW,YAAa,cAAe,UACxD,EAEIrB,EAAU,KAAK,KAAMzhN,EAAW6/M,CAAU,EAE1C7/M,EAAU,GAAG,IAAK,SAAUnW,EAAMk6B,EAAQ,CAExC,GAAI8+L,EAAY,QAAQh5N,CAAI,IAAM,GAKlC,GAASk6B,GAAU,GAGnB,IAAIs0C,EAAMtD,EAAE,MAAM,WAAalrE,EAAM,CACnC,OAAQk6B,CAChB,CAAO,EAEDnsB,EAAK,SAAS,QAAQygE,CAAG,EAGrByqJ,EAAkB,QAAQj5N,CAAI,IAAM,KAIxCk6B,EAAO,UAAYs0C,EAAI,sBAC7B,CAAK,CACL,EAESuqJ,CACT,CAAC,EAEDxI,EAAG,OAAO,sBAAsB,CAC9B,SACA,SACF,EAAG,SAAUrlJ,EAAGslJ,EAAS,CACvB,SAAS0I,EAAaC,EAAM,CAC1B,KAAK,KAAOA,GAAQ,EACrB,CAED,SAAY,UAAU,IAAM,UAAY,CACtC,OAAO,KAAK,IAChB,EAEED,EAAY,UAAU,IAAM,SAAU15N,EAAK,CACzC,OAAO,KAAK,KAAKA,EACrB,EAEE05N,EAAY,UAAU,OAAS,SAAUE,EAAa,CACpD,KAAK,KAAOluJ,EAAE,OAAO,GAAIkuJ,EAAY,IAAK,EAAE,KAAK,IAAI,CACzD,EAIEF,EAAY,OAAS,GAErBA,EAAY,SAAW,SAAU39M,EAAM,CACrC,GAAI,EAAEA,KAAQ29M,EAAY,QAAS,CACjC,IAAIG,EAAe7I,EAAQj1M,CAAI,EAE/B29M,EAAY,OAAO39M,GAAQ89M,CAC5B,CAED,OAAO,IAAIH,EAAYA,EAAY,OAAO39M,EAAK,CACnD,EAES29M,CACT,CAAC,EAED3I,EAAG,OAAO,qBAAqB,CAE/B,EAAG,UAAY,CACb,IAAI+I,EAAa,CACf,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,O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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","names":["p","relList","link","processPreload","mutations","mutation","node","getFetchOpts","script","fetchOpts","makeMap","str","expectsLowerCase","map","list","i","val","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","value","normalizeStyle","isArray","res","item","normalized","isString","parseStringStyle","key","isObject","listDelimiterRE","propertyDelimiterRE","cssText","ret","tmp","normalizeClass","name","looseCompareArrays","b","equal","looseEqual","aValidType","isDate","bValidType","isSymbol","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","arr","toDisplayString","objectToString","isFunction","replacer","_key","isMap","entries","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","isModelListener","extend","remove","el","hasOwnProperty","hasOwn","toTypeString","isPromise","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","toNumber","n","_globalThis","getGlobalThis","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","l","last","effectScope","recordEffectScope","effect","scope","createDep","effects","dep","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","targetMap","effectTrackDepth","maxMarkerBits","activeEffect","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","parent","lastShouldTrack","shouldTrack","cleanupEffect","trackStack","pauseTracking","resetTracking","track","target","type","depsMap","trackEffects","debuggerEventExtraInfo","trigger","newValue","oldTarget","triggerEffects","triggerEffect","isNonTrackableKeys","builtInSymbols","get","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive","set","createSetter","shallowSet","isShallow","hadKey","result","deleteProperty","has","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","v","get$1","rawTarget","rawKey","wrap","toReadonly","toReactive","has$1","size","add","set$1","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","trackRefValue","ref","triggerRefValue","newVal","r","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","toRefs","object","toRef","ObjectRefImpl","_object","_defaultValue","defaultValue","_a","ComputedRefImpl","getter","_setter","isSSR","self","computed","getterOrOptions","debugOptions","setter","onlyGetter","callWithErrorHandling","instance","err","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","findInsertionIndex","id","start","end","middle","getId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","a","comparator","diff","check","emit$1","event","rawArgs","props","modelArg","modifiersKey","trim","number","handlerName","handler","onceHandler","normalizeEmitsOptions","comp","appContext","asMixin","cached","hasExtends","extendEmits","normalizedFromExtend","isEmitListener","options","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","pushScopeId","popScopeId","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","renderComponentRoot","Component","propsOptions","fallthroughAttrs","vnode","proxyToUse","withProxy","normalizeVNode","render","renderCache","setupState","data","attrs","getFunctionalFallthrough","blockStack","createVNode","Comment","root","inheritAttrs","keys","shapeFlag","filterModelListeners","cloneVNode","filterSingleRoot","children","singleRoot","child","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","nextProps","nextChildren","emits","component","patchFlag","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","updateHOCHostEl","isSuspense","SuspenseImpl","n1","n2","container","anchor","parentComponent","parentSuspense","isSVG","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrateSuspense","createSuspenseBoundary","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","hiddenContainer","createElement","suspense","setActiveBranch","unmount","newBranch","newFallback","pendingBranch","isSameVNodeType","isInFallback","activeBranch","isHydrating","timeout","pendingId","move","next","resume","delayEnter","hasUnresolvedAncestor","fallbackVNode","mountFallback","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncSetupResult","handleSetupResult","placeholder","parentNode","doRemove","hydrateNode","isSlotChildren","normalizeSuspenseSlot","s","block","trackBlock","isBlockTreeEnabled","openBlock","currentBlock","closeBlock","queueEffectWithSuspense","branch","provide","currentInstance","provides","parentProvides","inject","treatDefaultAsFactory","INITIAL_WATCHER_VALUE","watch","source","doWatch","forceTrigger","isMultiSource","isShallow$1","deep","traverse","cleanup","onCleanup","baseGetter","isInSSRComponentSetup","immediate","flush","queuePostRenderEffect","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","path","segments","defineComponent","isAsyncWrapper","defineAsyncComponent","userOnError","pendingRequest","resolvedComp","retries","retry","load","thisRequest","loader","resolve","reject","createInnerComp","onError","errorComponent","suspensible","loaded","error","delayed","delay","isKeepAlive","loadingComponent","onActivated","hook","registerKeepAliveHook","onDeactivated","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","hooks","createHook","lifecycle","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","withDirectives","directives","internalInstance","getExposeProxy","bindings","dir","modifiers","invokeDirectiveHook","oldBindings","binding","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","warnMissing","selfName","getComponentName","registry","renderList","renderItem","index","renderSlot","slots","fallback","noSlotted","slot","validSlotContent","ensureValidVNode","rendered","createBlock","Fragment","vnodes","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","PublicInstanceProxyHandlers","normalizedProps","accessCache","shouldCacheAccess","publicGetter","cssModule","globalProperties","descriptor","applyOptions","callHook","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","resolveInjections","methods","methodHandler","opt","createWatcher","created","registerLifecycleHook","register","_hook","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","errorCaptured","renderTracked","renderTriggered","beforeUnmount","unmounted","serverPrefetch","expose","exposed","components","checkDuplicateProperties","unwrapRef","normalizeInject","h","base","extendsOptions","globalMixins","resolved","mixins","mergeOptions","optionMergeStrategies","to","from","strats","m","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","initProps","rawProps","isStateful","InternalObjectKey","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","createAppContext","uid","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","plugin","mixin","directive","rootContainer","isHydrate","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","getNextHostNode","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","removeStaticNode","mountElement","patchElement","vnodeHook","mountChildren","dirs","unmountChildren","invokeVNodeHook","setScopeId","needCallTransitionHooks","transition","scopeId","subTree","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","areChildrenSVG","dynamicChildren","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","updateComponentPreRender","componentUpdateFn","originNext","bu","nextTree","prevTree","u","isAsyncWrapperVNode","bm","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","moveType","performLeave","leave","afterLeave","delayLeave","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","allowed","ch1","ch2","len","arrI","isTeleport","disableTracking","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","text","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid$1","getCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","resolvedResult","e","finishComponentSetup","compile","skipOptions","template","componentCompilerOptions","finalCompilerOptions","compilerOptions","createAttrsProxy","includeInferred","computed$1","withAsyncContext","getAwaitable","awaitable","propsOrChildren","version","svgNS","doc","templateContainer","nodeOps","tag","is","selector","before","wrapper","patchClass","transitionClasses","patchStyle","isCssString","setStyle","currentDisplay","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","nativeOnRE","patchProp","shouldSetAsProp","getModelAssigner","onCompositionStart","onCompositionEnd","vModelText","castToNumber","lazy","domValue","vModelCheckbox","modelValue","elementValue","getValue","checked","assign","found","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","o","setSelected","_binding","isMultiple","option","optionValue","systemModifiers","modifierGuards","withModifiers","guard","keyNames","withKeys","eventKey","k","vShow","setDisplay","rendererOptions","renderer","ensureRenderer","createApp","containerOrSelector","normalizeContainer","mount","isBrowser","isESModule","applyToParams","params","newParams","noop","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","location","currentLocation","query","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","position","toPosition","segment","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","offset","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","delta","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","search","useHistoryListeners","historyState","replace","listeners","teardowns","pauseState","popStateHandler","fromState","state","listener","pauseListeners","listen","teardown","beforeUnloadListener","history","destroy","buildState","back","forward","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","push","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","extraOptions","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","re","regexp","subPattern","repeatable","optional","parse","stringify","avoidDuplicatedSlash","param","compareScoreArray","comparePathParserScore","aScore","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","message","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","isRecordChildOf","paramsFromLocation","matched","parentMatcher","mergeMetaFields","normalizeRecordProps","propsObject","meta","defaults","partialOptions","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","searchParams","searchParam","eqPos","currentValue","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","reset","guardToPromiseFn","enterCallbackArray","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","length","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","RouterLinkImpl","elClass","getLinkClass","RouterLink","outer","inner","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","depth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","routePropsOption","routeProps","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","redirect","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","triggerAfterEach","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","readyHandlers","errorHandlers","ready","isReady","scrollBehavior","started","installedApps","reactiveRoute","unmountApp","promise","recordFrom","recordTo","useRouter","useRoute","_imports_0$i","bind","kindOf","thing","toString","kindOfTest","typeOfTest","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isNumber","prototype","getPrototypeOf","isFile","isBlob","isFileList","isStream","isFormData","isURLSearchParams","forEach","allOwnKeys","merge","assignValue","stripBOM","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","endsWith","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","p1","p2","isRegExp","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","utils","AxiosError","code","config","request","response","customProps","axiosError","browser","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","isSpecCompliant","toFormData","formData","envFormData","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","stack","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","isStandardBrowserEnv","product","platform","URLSearchParams","FormData","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","settle","validateStatus","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","isURLSameOrigin","msie","urlParsingNode","originURL","resolveURL","requestURL","parsed","CanceledError","parseProtocol","ignoreDuplicateOf","rawHeaders","line","$internals","$defaults","normalizeHeader","header","normalizeValue","parseTokens","tokensRE","matchHeaderValue","formatHeader","w","buildAccessors","accessorName","methodName","arg1","arg2","arg3","findKey","AxiosHeaders","headers","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","deleted","deleteHeader","format","asStrings","parseHeaders","accessors","defineAccessor","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","total","progressBytes","rate","inRange","xhrAdapter","requestData","requestHeaders","responseType","onCanceled","username","password","onloadend","responseHeaders","timeoutErrorMessage","transitional","xsrfValue","cancel","protocol","adapters","httpAdapter","adapters$1","nameOrAdapter","adapter","DEFAULT_CONTENT_TYPE","getDefaultAdapter","stringifySafely","contentType","hasJSONContentType","isObjectPayload","_FormData","forcedJSONParsing","JSONRequested","strictJSONParsing","status","transformData","isCancel","throwIfCancellationRequested","dispatchRequest","reason","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","VERSION","validators","deprecatedWarnings","validator","formatMessage","desc","opts","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","paramsSerializer","defaultHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","onfulfilled","_resolve","spread","isAxiosError","payload","createInstance","defaultConfig","axios","promises","BASE_PATH","DUMMY_BASE_URL","Configuration","__publicField","mime","jsonMime","setBearerAuthToObject","configuration","accessToken","setSearchParams","objects","objectToFormData","kv","fd","createRequestFunction","axiosArgs","globalAxios","basePath","axiosRequestArgs","toPathString","serializeDataIfNeeded","requestOptions","nonString","ApiAxiosParamCreator","localVarPath","localVarQueryParameter","requiereAutenticacion","localVarUrlObj","baseOptions","localVarRequestOptions","localVarHeaderParameter","headersFromBaseOptions","ApiFp","esBlob","localVarAxiosParamCreator","localVarAxiosArgs","BaseAPI","EstadoRespuesta","IdentityApi","crearUsuarioBody","opcionesAdicionalesAxios","userId","callbackUrl","loginBody","Cliente","Enums","Aplicacion","EtapaSeguroVida","ObtenerMaterialApoyo","TipoFigura","AdjudicacionApi","annio","mes","AtencionClienteApi","aclaracion","aclaracionUsuario","archivo","ruta","CalculadoraApi","calculadoraBody","ClienteApi","ColoniaApi","codigoPostal","DomiciliacionApi","bodyDomiciliacion","cuentaDomiciliacionId","tipo","informacionFinanciamientoContrato","onboardingIncodeBody","EscrituracionApi","desdeFiguraApoyo","estudioSocioeconomico","obligadoSolidario","documentoTramiteTitulacionId","obligadoSolidarioNumero","estudioSocioeconomicoEntidad","EstadisticaApi","moduloEstadistica","EstudioSocioeconomicoApi","operacionTitulacionId","estudioSocioeconomicoV2","estudioSocioeconomicoId","estudioSocioeconomicoFigurasApoyoV2","respuestaFuenteIngreso","numero","respuestaIngresoFiguraApoyo","categoria","estudioSocioEconomicoId","figura","entidad","FacturacionApi","facturacionBody","FinanciamientoApi","aplicacion","contratoId","garantiaId","GiroIngresoApi","HomeApi","registrarUsuarioBody","altaUsuario","actualizarAltaCliente","correo","enviarCodigoVerificacionMailBody","enviarCodigoVerificacionPuntoContactoBody","enviarCodigoVerificacionSmsBody","validarCodigoVerificacionBody","validarCodigoVerificacionRecuperacionBody","generarPINBody","valor","medioContacto","canal","cambiarContraseniaTokenBody","identificacion","telParticular","celParticular","correoPersonal","calle","ladaPais","coloniaId","beneficiarioDetalle","beneficiarioId","imagen","MaterialApoyoApi","cadena","OperacionTitulacionApi","PagoApi","telefono","monto","ProfesionApi","ProgramaReciclaApi","programaRecicla","RegimenFiscalApi","SeguroApi","tramiteSeguroId","cotitularID","personaFisicaId","tipoDocumento","SiniestroApi","documentoTramiteSiniestroId","documentoSiniestroId","siniestrosDañosPortalCliente","enviarCorreoSiniestroVidaBody","_Cliente","Financiamiento","TipoAdjudicacion","TipoDomiciliacion","Models","Estadisticas","ModuloEstadistica","AplicacionMotorPagos","MedioPreferidoContacto","TipoAdquisicion","ActividadEconomica","Canal","CategoriaDocumentoTramiteTitulacion","CategoriasDeposito","ConceptoTransaccion","CondicionLadrillo","EstatusAlta","EstatusDeposito","EstatusRecibo","EstatusSesion","EstatusTramiteSeguro","EstudioSocioeconomicoEntidad","FormaPago","OrigenTransaccion","Propietario","Segmentacion","TipoConstruccion","TipoDocumentoDomiciliacion","TipoFuenteIngreso","TipoMaterialApoyo","TipoMenuMaterialApoyo","TipoProducto","TipoRecibo","TipoSinestro","UsoInmueble","Core","EstadoCivil","EstatusComplementoCI","EstatusContrato","EstatusContratoLegal","EstatusFolio","EstatusSolicitud","EtapaOperacionTitulacion","GradoEstudios","Identificacion","Parentesco","ProcedimientoAdjudicacion","ProductoContratado","ProgramaEspecial","RegimenMatrimonial","Sexo","TipoCliente","TipoContacto","TipoDocumentoTramiteSeguro","TipoFondeo","TipoIngreso","TipoPension","TipoPoliza","TipoProductoGarantia","TipoProyecto","TipoUbicacion","TipoUbicacionGeografica","TipoVenta","TipoVivienda","isVue2","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","createPinia","_p","toBeInstalled","addSubscription","subscriptions","removeSubscription","idx","triggerSubscriptions","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","shouldHydrate","isComputed","createOptionsStore","hot","initialState","store","localState","actions","getters","computedGetters","createSetupStore","newState","$state","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","$dispose","wrapAction","action","afterCallbackList","onErrorCallbackList","after","partialStore","stopWatcher","setupStore","actionValue","extender","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","mapStoreSuffix","mapStores","stores","reduced","storeToRefs","useAxiosStore","usuario","contrasenia","axiosApi","buscarReferencia","objeto","br","resolverRefsArray","objetoGlobal","ks","resolverRefs","resolverRefsObjeto","removerIds","pila","axiosStore","respuesta","configuracion","api","loginOriginal","mostrarTodoSobreMiFinanciamiento","mostrarMaterialApoyo","seguros","salir","seleccionarSeguro","periodo","_imports_0$h","_imports_1$a","sfc","_sfc_main","initializeGenesys","g","es","ys","comparer","arrDiff","encontrado","nombre","aHtml","valorIfNaN","generarId","limpiarString","texto","patronAlfaNumEspacio","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","attributes","_ref2","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","max","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","width","height","getLayoutRect","contains","rootNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","_options$scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$2","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","visited","modifier","sort","requires","depModifier","orderModifiers","orderedModifiers","phase","debounce","pending","mergeByName","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref3$options","cleanupFn","noopFn","createPopper","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","getUID","prefix","getSelector","hrefAttribute","getSelectorFromElement","getElementFromSelector","getTransitionDurationFromElement","floatTransitionDuration","transitionDuration","floatTransitionDelay","transitionDelay","triggerTransitionEnd","getElement","isVisible","elementIsVisible","closedDetails","summary","isDisabled","findShadowRoot","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","isRTL","defineJQueryPlugin","$","JQUERY_NO_CONFLICT","execute","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","getElementEvents","bootstrapHandler","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","events","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","hydrateObj","elementMap","Data","instanceMap","normalizeData","normalizeDataKey","chr","Manipulator","bsKeys","pureKey","Config","jsonConfig","configTypes","valueType","BaseComponent","propertyName","isAnimated","enableDismissTrigger","clickEvent","NAME$f","DATA_KEY$a","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$8","Alert","NAME$e","DATA_KEY$9","EVENT_KEY$a","DATA_API_KEY$6","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE$5","EVENT_CLICK_DATA_API$6","Button","button","SelectorEngine","parents","ancestor","previous","focusables","NAME$d","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default$c","DefaultType$c","Swipe","absDeltaX","direction","NAME$c","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default$b","DefaultType$b","Carousel","items","activeIndex","img","swipeConfig","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","eventName","isCycling","directionalClassName","orderClassName","completeCallBack","carousel","slideIndex","carousels","NAME$b","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","toggleList","elem","filterElement","foundElement","activeChildren","activeInstance","dimension","complete","scrollSize","selected","triggerArray","isOpen","_config","selectorElements","NAME$a","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","ESCAPE_KEY$2","TAB_KEY$1","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","RIGHT_MOUSE_BUTTON","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","Default$9","DefaultType$9","Dropdown","relatedTarget","Popper","referenceElement","popperConfig","Popper.createPopper","parentDropdown","isEnd","popperData","defaultBsPopperConfig","openToggles","toggle","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","documentWidth","calculatedValue","styleProperty","scrollbarWidth","manipulationCallBack","actualValue","callBack","sel","NAME$9","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","DefaultType$8","Backdrop","backdrop","NAME$8","DATA_KEY$5","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default$7","DefaultType$7","FocusTrap","trapElement","elements","NAME$7","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$2","ESCAPE_KEY$1","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","OPEN_SELECTOR$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$2","Default$6","DefaultType$6","Modal","htmlElement","modalBody","transitionComplete","event2","isModalOverflowing","initialOverflowY","isBodyOverflowing","showEvent","alreadyOpen","NAME$6","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","ESCAPE_KEY","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_TOGGLE$1","Default$5","DefaultType$5","Offcanvas","completeCallback","clickCallback","uriAttributes","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","attributeRegex","regex","DefaultAllowlist","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","elementName","attributeList","allowedAttributes","NAME$5","Default$4","DefaultType$4","DefaultContentType","TemplateFactory","templateWrapper","extraClass","templateElement","NAME$4","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_MODAL","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE$2","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_INSERTED","EVENT_CLICK$1","EVENT_FOCUSIN$1","EVENT_FOCUSOUT$1","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","Default$3","DefaultType$3","Tooltip","isInTheDom","tip","tipId","attachment","triggers","eventIn","eventOut","title","dataAttributes","dataAttribute","NAME$3","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","NAME$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","section","observableSection","targetElement","entry","activate","parentScrollTop","userScrollsDown","entryIsLowerThanPrevious","targetLinks","listGroup","activeNodes","spy","NAME$1","DATA_KEY$1","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","innerElem","active","hideEvent","relatedElem","nextActiveElement","outerElem","open","className","NAME","DATA_KEY","EVENT_KEY","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","Default","Toast","isInteracting","$store","mostrarMenu","URLDevQ","URLWhatsApp","utilidades.generarId","abrirModal","miModal","modal","bootstrap.Modal","nuevoModal","cerrarModal","cargarDatos","resp","_b","_c","_d","_e","_f","_mutation","undefined","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsOptJoin","rsOrdLower","rsOrdUpper","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","deburredLetters","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","global","freeSelf","freeExports","exports","freeModule","module","moduleExports","freeProcess","nodeUtil","types","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","apply","func","arrayAggregator","array","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","asciiToArray","string","asciiWords","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseSortBy","baseTimes","baseToPairs","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","hasUnicodeWord","iteratorToArray","mapToArray","overArg","transform","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","stringToArray","unicodeToArray","unescapeHtmlChar","unicodeWords","runInContext","Array","Date","Error","Function","Math","Object","RegExp","String","TypeError","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","objectCreate","propertyIsEnumerable","splice","spreadableSymbol","symIterator","symToStringTag","defineProperty","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","Map","Promise","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","lazyClone","copyArray","lazyReverse","lazyValue","isArr","isRight","arrLength","view","getView","iteratees","iterLength","takeCount","baseWrapperValue","iterIndex","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","baseAggregator","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","getAllKeys","baseConforms","baseConformsTo","baseDelay","wait","setTimeout","baseDifference","includes","isCommon","valuesLength","valuesIndex","baseEach","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFill","toInteger","toLength","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","getRawTag","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","maxLength","baseInverter","baseInvoke","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","indexOf","basePullAt","baseUnset","baseRange","step","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","clearTimeout","cloneArrayBuffer","arrayBuffer","cloneDataView","dataView","cloneRegExp","cloneSymbol","symbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","initializer","createAssigner","assigner","sources","isIterateeCall","iterable","createBind","isBind","Ctor","createCtor","createCaseFirst","trailing","createCompounder","words","deburr","thisBinding","createCurry","arity","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","getFuncName","funcName","getData","isLaziable","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","createOver","arrayFunc","createPadding","chars","charsLength","createPartial","createRange","toFinite","createRelationalOperation","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","newData","setData","setWrapToString","createRound","precision","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","flatten","otherFunc","isKeyable","isOwn","unmasked","stubArray","ctorString","transforms","getWrapDetails","hasPath","hasFunc","insertWrapDetails","details","isMaskable","stubFalse","memoizeCapped","memoize","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","updateWrapDetails","count","lastCalled","stamp","remaining","rand","quote","subString","chunk","compact","concat","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","findIndex","findLastIndex","flattenDeep","flattenDepth","fromPairs","initial","intersection","mapped","intersectionBy","intersectionWith","join","separator","lastIndexOf","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","reverse","slice","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","tap","thru","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","clone","wrapperReverse","wrapped","wrapperValue","countBy","every","find","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","invokeMap","keyBy","orderBy","partition","reduce","reduceRight","negate","sample","sampleSize","shuffle","some","sortBy","bindKey","curry","curryRight","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","debounced","isInvoking","defer","resolver","memoized","once","overArgs","funcsLength","partial","partialRight","rearg","rest","throttle","unary","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gt","gte","isEmpty","isEqual","isEqualWith","isError","isFinite","isInteger","isMatch","isMatchWith","isNaN","isNative","isNull","isNil","isSafeInteger","isWeakMap","isWeakSet","lt","lte","sign","remainder","isBinary","toSafeInteger","assignIn","assignInWith","assignWith","at","create","properties","propsIndex","propsLength","defaultsDeep","mergeWith","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","invoke","mapKeys","mapValues","omit","omitBy","pickBy","pick","setWith","toPairs","toPairsIn","isArrLike","unset","updateWith","valuesIn","clamp","random","floating","temp","camelCase","word","upperFirst","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","pad","strLength","padEnd","padStart","parseInt","radix","repeat","snakeCase","split","limit","startCase","startsWith","settings","imports","importsKeys","importsValues","isEscaping","isEvaluating","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","attempt","toLower","toUpper","trimEnd","trimStart","truncate","omission","substring","newEnd","unescape","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matchesProperty","methodOf","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","uniqueId","augend","addend","ceil","divide","dividend","divisor","floor","maxBy","mean","meanBy","minBy","multiplier","multiplicand","subtract","minuend","subtrahend","sum","sumBy","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","this","TipoBootstrap","factory","privateProps","swalPrefix","swalClasses","iconTypes","consolePrefix","uniqueArray","capitalizeFirstLetter","warn","previousWarnOnceMessages","warnOnce","warnAboutDeprecation","deprecatedParam","useInstead","callIfFunction","hasToPromiseFn","asPromise","getContainer","elementBySelector","selectorString","elementByClass","getPopup","getIcon","getIconContent","getTitle","getHtmlContainer","getImage","getProgressSteps$1","getValidationMessage","getConfirmButton","getDenyButton","getInputLabel","getLoader","getCancelButton","getActions","getFooter","getTimerProgressBar","getCloseButton","focusable","getFocusableElements","focusableElementsWithTabindex","tabindexA","tabindexB","otherFocusableElements","isVisible$1","isModal","hasClass","isToast","isLoading","states","setInnerHtml","classList","removeCustomClasses","applyCustomClass","addClass","getInput$1","popup","inputClass","focusInput","input","toggleClass","condition","removeClass","getDirectChildByClass","applyNumericalStyle","show","display","allButtonsAreHidden","isScrollable","hasCssAnimation","animDuration","transDuration","animateTimerProgressBar","timer","timerProgressBar","stopTimerProgressBar","timerProgressBarWidth","timerProgressBarFullWidth","timerProgressBarPercent","RESTORE_FOCUS_TIMEOUT","globalState","focusPreviousActiveElement","restoreActiveElement","returnFocus","isNodeEnv","sweetHTML","resetOldContainer","oldContainer","resetValidationMessage$1","addInputChangeListeners","file","rangeOutput","select","checkbox","textarea","getTarget","setupAccessibility","setupRTL","init","oldContainerExisted","parseHtmlToContainer","handleObject","handleJqueryElem","animationEndEvent","testEl","transEndEventNames","measureScrollbar","scrollDiv","renderActions","renderButtons","confirmButton","denyButton","cancelButton","renderButton","handleButtonsStyling","buttonType","renderCloseButton","closeButton","renderContainer","handleBackdropParam","handlePositionParam","handleGrowParam","grow","growClass","inputClasses","renderInput","innerParams","rerender","inputContainer","setAttributes","showInput","setCustomClass","renderInputType","getInputContainer","removeAttributes","attrName","inputAttributes","attr","setInputPlaceholder","setInputLabel","prependTo","label","labelClass","inputType","checkAndSetInputValue","inputValue","rangeInput","radio","checkboxContainer","getMargin","initialPopupWidth","textareaResizeHandler","textareaWidth","renderContent","htmlContainer","renderFooter","footer","renderIcon","icon","setContent","iconType","setColor","adjustSuccessIconBackgroundColor","popupBackgroundColor","successIconParts","successIconHtml","errorIconHtml","oldContent","newContent","iconContent","renderImage","image","renderPopup","addClasses$1","renderProgressSteps","progressStepsContainer","stepEl","createStepElement","lineEl","createLineElement","renderTitle","hideLoading","domCache","showRelatedButton","buttonToReplace","getInput","clickConfirm","clickDeny","clickCancel","DismissReason","removeKeydownHandler","addKeydownHandler","dismissWith","keydownHandler","setFocus","increment","focusableElements","arrowKeysNextButton","arrowKeysPreviousButton","handleEnter","handleTab","handleArrows","handleEsc","btnIndex","sibling","buttonToFocus","privateMethods","setAriaHidden","unsetAriaHidden","iOSfix","lockBodyScroll","addBottomPaddingForTallPopups","ua","iOS","webkit","preventTouchMove","shouldPreventTouchMove","isStylus","isZoom","undoIOSfix","fixScrollbar","undoScrollbar","removePopupAndResetState","didClose","triggerDidCloseAndDispose","removeBodyClasses","close","resolveValue","prepareResolveValue","swalPromiseResolve","triggerClosePopup","handleAwaitingPromise","isAwaitingPromise","handlePopupAnimation","rejectPromise","animationIsSupported","animatePopup","setButtonsDisabled","buttons","disabled","setInputDisabled","radios","enableButtons","disableButtons","enableInput","disableInput","showValidationMessage","resetValidationMessage","getProgressSteps","defaultParams","updatableParams","deprecatedParams","toastIncompatibleParams","isValidParameter","paramName","isUpdatableParameter","isDeprecatedParameter","checkIfParamIsValid","checkIfToastParamIsValid","checkIfParamIsDeprecated","showWarningsForParams","validUpdatableParams","filterValidParams","updatedParams","_destroy","disposeWeakMaps","disposeSwal","unsetWeakMaps","instanceMethods","showLoading","Swal","replaceButton","handleInputOptionsAndValue","handleInputOptions","handleInputValue","getInputValue","getRadioValue","getFileValue","processInputOptions","inputOptions","populateInputOptions","formatInputOptions","renderOption","optionLabel","isSelected","inputOption","optgroup","radioValue","radioLabel","radioInput","radioLabelElement","valueFormatted","handleConfirmButtonClick","handleConfirmOrDenyWithInput","confirm","handleDenyButtonClick","deny","handleCancelButtonClick","handleInputValidator","validationMessage","preDenyValue","rejectWith","succeedWith","preConfirmValue","handlePopupClick","handleToastClick","handleModalMousedown","handleContainerMousedown","handleModalClick","isAnyButtonShown","ignoreOutsideClick","isJqueryElement","argsToParams","fire","mixinParams","MixinSwal","priorityMixinParams","getTimerLeft","stopTimer","resumeTimer","toggleTimer","increaseTimer","isTimerRunning","bodyClickListenerAdded","clickHandlers","bindClickHandler","bodyClickListener","staticMethods","Timer","running","swalStringParams","getTemplateParams","templateContent","getSwalParams","getSwalFunctionParams","getSwalButtons","getSwalImage","getSwalIcon","getSwalInput","getSwalStringParams","showWarningsForAttributes","optionName","paramNames","showWarningsForElements","allowedElements","tagName","SHOW_CLASS_TIMEOUT","openPopup","initialBodyOverflow","addClasses","setScrollingVisibility","fixScrollContainer","swalOpenAnimationFinished","scrollbarPadding","defaultInputValidators","setDefaultInputValidators","validateCustomTargetElement","setParameters","SweetAlert","outerParams","userParams","prepareParams","populateDomCache","swalPromise","onFinally","dismiss","setupTimer","initFocus","templateParams","blurActiveElement","focusButton","ukrainianAnthem","t","AutoNumericEnum","AutoNumericHelper","lowercaseValue","latinConvertedNumber","needle","decimalPart","keyCode","potentialResult","tem","M","numberOrNumericString","negativeSignCharacter","checkEverywhere","numericString","valueString","leftBracket","rightBracket","newCharacter","formattedNumberString","caretPosition","decimalCharacter","numberDotOrNegativeSign","numberDotAndNegativeSignCount","rawNumberString","caretPositionInRawValue","formattedNumberStringSize","rawNumberStringSize","formattedNumberStringIndex","rawNumberStringIndex","character","charCounter","characterCount","isSelectionStartUndefined","selectionInfo","selection","showWarning","wheelEvent","decimalPlaces","integerPart","stepPlace","isAddition","decimalPlacesRawValue","absValue","rawValueMinimumOffset","minimumOffsetFirstDecimalPlaceIndex","indexFirstNonZeroDecimalPlace","lengthValue","pow","decimalPlacesLimit","arabicNumbers","returnANumber","parseDecimalCharacter","parseThousandSeparator","d","resultAsNumber","detail","cancelable","nL","xc","yc","xNeg","domElementOrSelector","removeData","skipFirstWord","nodeType","excludedElements","trimmedDecimalPart","hoveredElements","mapObjects","as","numericValue","exponent","isNegative","isNegativeExponent","int","float","Evaluator","ast","subtree","ASTNode","Token","Lexer","startIndex","Parser","customDecimalCharacter","termNode","exprNode","factorNode","termsNode","expression","factor","expected","AutoNumeric","userOptions","valueToSet","aNObject","forcedOutputFormat","newOptions","checkOnlyRawValue","isPristine","forceClearAll","domElementOrAutoNumericObject","otherAutoNumericObject","otherANLocalList","mergedLocalLists","keepCurrentANObject","initialCompleteLocalList","keepEachANObjectInItsOwnList","allowDecimalPadding","alwaysAllowDecimalCharacter","caretPositionOnFocus","createLocalList","currencySymbol","currencySymbolPlacement","decimalCharacterAlternative","decimalPlacesShownOnBlur","decimalPlacesShownOnFocus","defaultValueOverride","digitalGroupSpacing","digitGroupSeparator","divisorWhenUnfocused","emptyInputBehavior","eventBubbles","eventIsCancelable","failOnUnknownOption","formatOnPageLoad","formulaMode","historySize","invalidClass","isCancellable","leadingZero","maximumValue","minimumValue","modifyValueOnWheel","negativeBracketsTypeOnBlur","negativePositiveSignPlacement","noEventListeners","onInvalidPaste","outputFormat","overrideMinMaxLimits","positiveSignCharacter","rawValueDivisor","readOnly","roundingMethod","saveValueToSessionStorage","symbolWhenUnfocused","selectNumberOnly","selectOnFocus","serializeSpaces","showOnlyNumbersOnFocus","showPositiveSign","showWarnings","styleRules","suffixText","unformatOnHover","unformatOnSubmit","valuesToStrings","watchExternalChanges","wheelOn","wheelStep","isArg1Element","isArg1String","isArg2Object","isArg2Array","isArg2Number","isArg2PreDefinedOptionName","isArg2Null","isArg2EmptyString","isArg3Object","isArg3Array","isArg3Null","isArg3PreDefinedOptionName","optionsArray","mergedOptions","optionObjectOrPredefinedOptionString","preDefinedOptionName","optionObjectOrPredefinedName","anCount","formElement","formElementToUse","formHandlerName","useHtmlAttribute","attributeToWatch","isEmptyHistoryTable","addNewHistoryState","nextHistoryStateIndex","undo","undoInfo","numberOfEntriesToForget","shiftedAway","indexToUse","userObject","callbackResult","userClass","cssClassName","originalSettings","optionsToUse","optionObject","saveChangeToHistory","minTest","maxTest","forcedRawValue","strippedValue","normalizedValue","oldRawValue","newElementValue","sendFormattedEvent","oldElementValue","rawValueForTheElementValue","stringsArray","outputFormatToUse","unformattedValue","valueLen","currencySymbolSize","negLen","suffixTextLen","isPositive","decimalCount","otherAnElement","domElementToDetach","reFormat","valueOrElement","optionOverride","stringOrElement","isFormatting","valueOrStringOrElement","settingsToUse","domElementOrArrayOrString","attached","returnASingleAutoNumericObject","domElementsArray","currentLocalList","autoNumericObjectsArray","originalCreateLocalListSetting","newAutoNumericElement","temporaryForcedOptions","forceSearch","newParentForm","oldANChildren","anElement","formNode","inputList","autoNumericInputs","weakMapName","autoNumericObject","localList","newSettings","shouldExtendDefaultOptions","originalOptions","isOriginalOptionAnObject","testPositiveInteger","testNumericalCharacters","testFloatOrIntegerAndPossibleNegativeSign","testPositiveFloatOrInteger","rule","isValid","optionsResult","numericStringOrDomElement","formattedValue","localizedValue","getFunction","predefinedOption","htmlAttribute","stripZeros","isFocused","negativeSign","modifiedIntegerPart","rearrangeSignsAndValueOrder","firstBracket","lastBracket","convertToNumber","locale","signOnEmpty","currentRawValue","isValueNegative","isZeroOrHasNoValue","digitalGroup","decimalPlacesToRoundTo","signToUse","totalLength","valueSize","integerSize","hasDecimalChar","offsetDecimalChar","positiveNegativeSignSize","roundedInputValue","decimalPlacesNeeded","preparedValue","decimalCharacterPosition","inputValueHasNoDot","temporaryDecimalPlacesOverride","decimalPositionToUse","checkDecimalPlaces","inputValueRounded","zeros","roundedStrLength","lastDigit","inputValueArray","odd","isPaste","modifiedDecimalPart","minParse","maxParse","valParse","minRangeOk","maxRangeOk","nameEQ","ca","mod","date","elementValueToSet","rawValueToFormat","roundedValue","isEmptyValue","orderedValue","orderedValueTest","formula","isDeletionAllowed","processed","cutNumber","isRawValueNull","elementValueIsAlreadySet","groupedValue","rawPastedText","eventTarget","initialFormattedValue","selectionStart","selectionEnd","selectionSize","untranslatedPastedText","pastedRawValue","isPasteNegative","pastedText","caretPositionOnInitialTextAfterPasting","isInitialValueNegative","isPasteNegativeAndInitialValueIsPositive","leftFormattedPart","rightFormattedPart","leftPart","rightPart","leftPartContainedADot","negativePasteOnNegativeNumber","lastGoodKnownResult","pastedTextIndex","modifiedLeftPart","lastGoodKnownResultIndex","lastGoodKnownResultSize","indexSelectionEndInRawValue","selectedText","valueHasBeenSet","valueHasBeenClamped","clampedValue","caretPositionInFormattedNumber","currentUnformattedValue","droppedText","cleanedValue","aNElement","hoveredElement","currentElementTag","forcedInitialValue","setValue","unLocalizedCurrentValue","toStrip","additionalDecimalPlacesRawValue","currentSettings","decimalPlacesInOptions","maximumValueIntegerPart","minimumValueIntegerPart","negativeSignReg","oldOptionsConverter","parsedMinValue","parsedMaxValue","parsedValue","normalizedLeft","normalizedRight","normalizedNewValue","testValue","valueToSetOnEmpty","roundedValueToShow","currencySymbolLen","signPosition","currencySymbolPosition","oldParts","eventKeyName","isFnKeys","isOSKeys","isContextMenu","isSomeNonPrintableKeys","isOtherNonPrintableKeys","isUnrecognizableKeys","isValNegative","eventNumber","subParts","leftAr","signParts","escapeChr","escapedParts","miniParts","leftReg","newLeft","form","intoAnArray","formatType","serializedSpaceCharacter","valueResult","anObject","finalResult","isInitialValueArrayAndNotEmpty","secondArgumentIsInitialValueArray","secondArgumentIsOptionArray","typeOfFirstArrayElement","isOptionsArrayAndNotEmpty","thirdArgumentIsOptionArray","isInitialValueNumber","initialValueArraySize","CustomEvent","freezeOptions","valuesToStringObjectName","euro","dollar","japanese","euroF","euroPos","euroNeg","euroSpace","euroSpacePos","euroSpaceNeg","percentageEU2dec","percentageEU2decPos","percentageEU2decNeg","percentageEU3dec","percentageEU3decPos","percentageEU3decNeg","dollarF","dollarPos","dollarNeg","dollarNegBrackets","percentageUS2dec","percentageUS2decPos","percentageUS2decNeg","percentageUS3dec","percentageUS3decPos","percentageUS3decNeg","turkish","au","_createElementBlock","_cache","_ctx","componentId","comprobacionIngresosGeneral","curr","oldVal","ci","cic","cantidad","esComprobacionIngresos","nominaActual","esComprobacionIngresosNominaActualSueldoNeto","sueldoNetoTotal","allData","siguienteNomina","anteriorNomina","eliminarNomina","indexof","filtros","currency","inputDate","dia","fecha","anio","esOrigen","esDestino","limpiarFechas","esES","generarObjetoIngresos","ingresos","ingresosGuardados","generarComprobacionIngresos","toast","toastId","__default__","filtroDivisa","useClienteClienteStore","$router","formId","fechaActual","fechaIso","catalogos","formularioValidado","estudioSocioeconomicoOriginal","medioPreferidoContactoJSON","reactiveEstudioSocioeconomico","esCargado","estudioSocioeconomicoTotalEgresos","_g","ActivarDesactivarRegimenMatrimonial","mostrarOcultarDatosConyuge","requeridoViviendaActual","regimenMatrimonial","calcularIngresos","guardarEstudioSocioeconomico","valido","enviarEstudioSocioEconomico","aIngresos","verficarConceptos","sumarTodosConceptos","limpiarIngresos","nomina","utilidades.limpiarString","ingresoGeneral","general","estudioSocioeconomicoTotalIngresos","limpiarFechasES","estudio","sumarDatos","suma","arrayAdd","valueCurrent","cantidadCurrent","arregloLimpio","cliente","mapearES","formDom","reactiveEstudioSocioeconomicoObligadoSolidario","estudioSocioeconomicoObligadoSolidario","ESUtilidades.generarObjetoIngresos","obligadoSolidarioTotalEgresos","estudioSocioeconomicoSueldoNominalNeto","_debounce","oCol","verificarConceptos","obligadoSolidarioTotalIngresos","calcularEgresos","llave","d2","ESUtilidades.mapear","ESUtilidades.asignarIngresos","noGlobal","flat","class2type","fnToString","ObjectFunctionString","support","isWindow","document","preservedScriptAttributes","DOMEval","jQuery","num","elems","_elem","src","copy","copyIsArray","msg","results","first","second","callbackInverse","callbackExpect","Sizzle","Expr","getText","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","expando","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pop","pushNative","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","groups","newSelector","newContext","testContext","toSelector","markFunction","assert","addHandle","siblingCheck","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","hasCompare","subWindow","attrId","adown","bup","compare","aup","ap","bp","expr","duplicates","excess","unquoted","nodeNameSelector","nodeName","what","_argument","simple","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","pseudo","unmatched","lang","elemLang","_matchIndexes","setFilters","parseOnly","soFar","preFilters","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","multipleContexts","contexts","condense","newUnmatched","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","compiled","_name","until","siblings","rneedsContext","rsingleTag","winnow","qualifier","not","rootjQuery","rparentsprev","guaranteedUnique","targets","selectors","rnothtmlwhite","createOptions","firing","memory","fired","locked","firingIndex","Identity","Thrower","ex","adoptValue","noValue","tuples","newDefer","tuple","deferred","returned","onProgress","maxDepth","special","that","mightThrow","then","process","stateString","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","readyList","completed","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","acceptData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","startLength","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","unit","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","fragment","div","wrapMap","getAll","setGlobalEval","refElements","buildFragment","scripts","ignored","nodes","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","on","one","origFn","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","mappedTypes","origCount","nativeEvent","handlerQueue","matchedHandlers","matchedSelectors","delegateCount","originalEvent","leverageNative","notAsync","saved","handle","delegateType","orig","fix","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","original","insert","rnumnonpx","rcustomProp","getStyles","swap","old","rboxStyle","rtrimCSS","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","table","tr","trChild","trStyle","curCSS","minWidth","maxWidth","isCustomProp","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","rdisplayswap","cssShow","cssNormalTransform","setPositiveNumber","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","origName","scrollboxSizeBuggy","suffix","expanded","parts","Tween","easing","percent","eased","fxNow","inProgress","rfxtypes","rrun","schedule","createFxNow","genFx","includeWidth","which","createTween","animation","Animation","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","hidden","dataShow","specialEasing","stopped","tick","currentTime","gotoEnd","speed","empty","optall","doAnimation","clearQueue","stopQueue","stop","dequeue","timers","cssFn","boolHook","attrHandle","nType","attrNames","lowercaseName","rfocusable","rclickable","tabindex","stripAndCollapse","getClass","classesToArray","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","optionSet","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","attaches","nonce","rquery","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","prefilters","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","contents","ajaxConvert","isSuccess","conv2","conv","converters","transport","cacheURL","responseHeadersString","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeadersNames","strAbort","statusText","finalText","nativeStatusText","success","modified","htmlIsFunction","xhrSuccessStatus","xhrSupported","errorCallback","xhr","oldCallbacks","rjsonp","callbackName","overwritten","responseContainer","jsonProp","keepScripts","off","responseText","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","parentOffset","defaultExtra","margin","fnOver","fnOut","hold","_jQuery","_$","LuxonError","InvalidDateTimeError","InvalidIntervalError","InvalidDurationError","ConflictingSpecificationError","InvalidUnitError","InvalidArgumentError","ZoneIsAbstractError","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","hasRelative","maybeArray","bestBy","by","best","integerBetween","floorMod","isNeg","padded","parseInteger","parseFloating","parseMillis","fraction","f","roundTo","digits","towardZero","isLeapYear","year","daysInYear","daysInMonth","month","modMonth","modYear","objToLocalTS","weeksInWeekYear","weekYear","untruncateYear","parseZoneInfo","ts","offsetFormat","timeZone","intlOpts","signedOffset","offHourStr","offMinuteStr","offHour","offMin","offMinSigned","asNumber","normalizeObject","normalizer","formatOffset","hours","minutes","timeObject","ianaRegex","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","meridiemForDateTime","dt","weekdayForDateTime","monthForDateTime","eraForDateTime","formatRelativeTime","numeric","narrow","units","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","stringifyTokens","splits","tokenToString","macroTokenToFormatOpts","Formats.DATE_SHORT","Formats.DATE_MED","Formats.DATE_FULL","Formats.DATE_HUGE","Formats.TIME_SIMPLE","Formats.TIME_WITH_SECONDS","Formats.TIME_WITH_SHORT_OFFSET","Formats.TIME_WITH_LONG_OFFSET","Formats.TIME_24_SIMPLE","Formats.TIME_24_WITH_SECONDS","Formats.TIME_24_WITH_SHORT_OFFSET","Formats.TIME_24_WITH_LONG_OFFSET","Formats.DATETIME_SHORT","Formats.DATETIME_MED","Formats.DATETIME_FULL","Formats.DATETIME_HUGE","Formats.DATETIME_SHORT_WITH_SECONDS","Formats.DATETIME_MED_WITH_SECONDS","Formats.DATETIME_FULL_WITH_SECONDS","Formats.DATETIME_HUGE_WITH_SECONDS","Formatter","fmt","currentFull","bracketed","formatOpts","knownEnglish","useDateTimeFormatter","extract","meridiem","English.meridiemForDateTime","standalone","English.monthForDateTime","weekday","English.weekdayForDateTime","maybeMacro","era","English.eraForDateTime","dur","tokenToField","lildur","realTokens","literal","collapsed","Invalid","explanation","Zone","otherZone","singleton","SystemZone","dtfCache","makeDTF","zone","typeToPos","hackyOffset","dtf","formatted","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","partsOffset","filled","pos","ianaZoneCache","IANAZone","day","adOrBc","hour","minute","asUTC","asTS","FixedOffsetZone","InvalidZone","zoneName","normalizeZone","defaultZone","lowered","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","throwOnInvalid","Settings","numberingSystem","outputCalendar","Locale","intlLFCache","getCachedLF","locString","intlDTCache","getCachedDTF","intlNumCache","getCachedINF","inf","intlRelCache","getCachedRTF","cacheKeyOpts","sysLocaleCache","systemLocale","parseLocaleString","localeStr","uIndex","smaller","calendar","intlConfigString","mapMonths","ms","DateTime","mapWeekdays","listStuff","loc","defaultOK","englishFn","intlFn","mode","supportsFastNumbers","PolyNumberFormatter","intl","forceSimple","otherOpts","fixed","PolyDateFormatter","z","gmtOffset","offsetZ","PolyRelFormatter","isEnglish","English.formatRelativeTime","defaultToEN","specifiedLocale","localeR","numberingSystemR","outputCalendarR","numbering","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","isActuallyEn","hasNoWeirdness","alts","English.months","formatStr","English.weekdays","English.meridiems","English.eras","field","df","matching","combineRegexes","regexes","full","combineExtractors","extractors","mergedVals","mergedZone","cursor","patterns","extractor","simpleParse","offsetRegex","isoExtendedZone","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","isoYmdRegex","isoWeekRegex","isoOrdinalRegex","extractISOWeekData","extractISOOrdinalData","sqlYmdRegex","sqlTimeRegex","sqlTimeExtensionRegex","extractISOYmd","extractISOTime","extractISOOffset","local","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","obsOffsets","fromStrings","weekdayStr","English.monthsShort","English.weekdaysLong","English.weekdaysShort","rfc2822","extractRFC2822","obsOffset","milOffset","preprocessRFC2822","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","parseISODate","parseRFC2822Date","parseHTTPDate","parseISODuration","extractISOTimeOnly","parseISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","parseSQL","INVALID","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits","reverseUnits","conf","Duration","antiTrunc","matrix","fromMap","fromUnit","toMap","toUnit","sameSign","added","normalizeValues","vals","accurate","durationLike","invalid","fmtOpts","millis","duration","mixed","conversionAccuracy","built","accumulated","lastUnit","own","ak","down","negated","v1","v2","validateStartEnd","Interval","builtStart","friendlyDateTime","builtEnd","validateError","startIsValid","endIsValid","dateTime","dateTimes","sorted","numberOfParts","intervals","sofar","currentCount","ends","flattened","dateFormat","mapFn","Info","locObj","dayDiff","earlier","later","utcDayStart","highOrderDiffs","differs","days","lowestOrder","highWater","differ","remainingMillis","lowerOrderUnits","numberingSystems","numberingSystemsUTF16","hanidecChars","parseDigits","digitRegex","append","MISSING_FTP","intUnit","post","NBSP","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","strings","escapeToken","unitForToken","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","partTypeStyleToTokenVal","tokenForPart","part","buildRegex","all","matchIndex","dateTimeFromMatches","toField","specificOffset","dummyDateTimeCache","getDummyDateTime","maybeExpandMacroToken","expandMacroTokens","explainFromTokens","disqualifyingUnit","regexString","rawMatches","parseFromTokens","invalidReason","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","computeOrdinal","uncomputeOrdinal","ordinal","month0","gregorianToWeek","gregObj","weekNumber","weekToGregorian","weekData","weekdayOfJan4","yearInDays","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","hasInvalidWeekData","validYear","validWeek","validWeekday","hasInvalidOrdinalData","validOrdinal","hasInvalidGregorianData","validMonth","validDay","hasInvalidTimeData","validHour","millisecond","validMinute","validSecond","validMillisecond","MAX_DATE","unsupportedZone","possiblyCachedWeekData","inst","fixOffset","localTS","tz","utcGuess","o2","o3","tsToObj","objToTS","adjustTime","oPre","millisToAdd","parseDataToDateTime","parsedZone","interpretationZone","setZone","toTechFormat","allowZ","toISODate","extended","longFormat","toISOTime","suppressSeconds","suppressMilliseconds","includeOffset","extendedZone","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedWeekUnits","orderedOrdinalUnits","normalizeUnit","quickDT","tsNow","offsetProvis","diffRelative","lastOpts","argList","ot","zoneToUse","milliseconds","seconds","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","useWeekData","defaultValues","objNow","foundFirst","higherOrderInvalid","gregorian","tsFinal","offsetFinal","localeToUse","newTS","keepLocalTime","keepCalendarTime","offsetGuess","asObj","settingWeekStuff","normalizedUnit","q","ext","includePrefix","includeZone","includeOffsetSpace","otherDateTime","durOpts","otherIsLater","diffed","inputMs","adjustedToZone","Formats.DATE_MED_WITH_WEEKDAY","Formats.DATETIME_MED_WITH_WEEKDAY","dateTimeish","_imports_0$g","nombreCliente","beneficiarios","fechaCreacion","reactiveActualizarCliente","actualizarCliente","ubicacion","Colonias","Colonia","emailParticular","telOficina","email2","fileName","puedeActualizarInformacion","puedeEditarInformacion","CodigoPostal","Paises","LadaPais","NombreArchivoCargado","editarInformacion","actualizarPassword","res2","actualizarDatosClientes","rep","cargarDatosClientes","ObtenerDocumento","cargarIdentificacionOficial","_imports_0$f","patronPassword","reactiveLoginUser","LoginUser","contador","autentificarUsuario","resc","mixinFiltros","mix","mixinId","EntidadID","elemento","indice","respAnexo","contrato","_h","_j","_k","_l","_m","_n","_o","_q","_r","_s","metodo","parametros","parametrosString","ID","documento","diferencia","RepPassword","CorreoUpperCase","crearUsuario","ActualizarPasswordCorreo","patternPassword","_imports_0$e","_imports_1$9","_imports_0$d","_imports_3$7","_imports_0$c","_imports_5$5","_imports_6$4","_imports_7$2","_imports_8$2","_imports_9$1","_imports_10$1","_imports_11","estado","seleccionado","aclaraciones","tipoAclaracion","mostrarModal","mostrarDescripcion","mostrarOpcionAclaracion","mostrarFolio","motsrarNombreArchivo","folio","crearAclaracion","aclaracionCliente","avisoAclaracion","avisoDescripcion","mensajeTamanioArchivo","mensajeTipoArchivo","files","fechaApagar","totalPagar","tieneComplementoEstadoCuenta","linkDescargaComplemento","referencia","pagosVencidos","Contratos","banners","carouselBanners","listaContratos","contratoSeleccionado","modalAceptarTCAP","aclaracionesModal","bannerModalCampanias","irProgramaRecicla","seleccionarAclaracion","estadoBoton","descripcion","aclaracionGuardada","archivos","archivoGuardado","obtenerArchivo","obtenerExtension","visualizarArchivo","eliminarArchivo","aceptarTCAP","mostrarModalAclaraciones","mostrarPopup","mensaje","cerrarModalAclaraciones","showBannerCompanias","noMostrarModalBannerCampanias","respContratos","invitacionProgramaReciclaMostrado","_cliente","resp2","bootstrap.Carousel","informacionFinanciamiento","respA","periodoSeleccionado","filtroContrato","tipoAgrupacion","descuentos","numContratos","modalDescuentos","inputGarantiaAliasRef","inputGarantiaAlias","listaAclaraciones","estatus","modalAclaraciones","utilidades.arrayDistinct","contratos","ocultarPopUp","ocultarTabla","abrirModalDescuento","mostrarTablaAclaraciones","seleccionarPeriodo","obtenerContratosGrupo","grupo","obtenerManualConsumidor","utilidades.descargarBlob","obtenerProductoContratado","obtenerAliasGarantia","contratoLocal","obtenerAclaracion","obtenertipoAclaracion","formato","contrato2","descuento","descuentosPago","_imports_0$b","require$$0","DataTable","sSelector","oOpts","_Api","_fnSettingsFromNode","_ext","redraw","rows","bRedraw","_fnScrollDraw","nTr","sInput","iColumn","bRegex","bSmart","bShowGlobal","bCaseInsensitive","col","iRow","cell","mHtml","sClass","mAction","iCol","bShow","aaSort","nNode","fnCallback","mData","mRow","bAction","_that","emptyInit","_fnExternApiFunc","oInit","_fnExtend","iLen","sId","bInitHandedOff","$this","_fnLog","_fnCompatOpts","_fnCompatCols","_fnCamelToHungarian","allSettings","bRetrieve","bDestroy","oSettings","_fnLanguageCompat","_fnMap","_fnCallbackReg","_fnGetObjectDataFn","_fnBrowserDetect","oClasses","oLanguage","json","_fnCallbackFire","_fnInitialise","stripeClasses","rowOne","anThs","aoColumnsInit","nThead","_fnDetectHeader","_fnGetUniqueThs","_fnAddColumn","_fnApplyColumnDefs","oDef","_fnColumnOptions","features","loadedInit","sorting","_fnSortingClasses","aSort","_fnSortFlatten","sortedColumns","_fnSortAria","_fnDataSource","captions","thead","tbody","tfoot","_fnAddData","_fnAddTr","_fnSaveState","_fnLoadState","_api_register","_api_registerPlural","_re_dic","_re_new_lines","_re_html","_re_date","_re_escape_regex","_re_formatted_numeric","_empty","_intVal","integer","_numToDecimal","decimalPoint","_fnEscapeRegex","_isNumber","strType","_isHtml","_htmlNumeric","_stripHtml","_pluck","prop2","out","ien","_pluck_order","_range","_removeEmpty","_areAllUnique","_unique","again","_flatten","_includes","freq","frequency","_fnSplitObjNotation","aLast","arrayNotation","funcNotation","innerSrc","__reArray","__reFn","jLen","row","fetchData","_fnHungarianMap","hungarian","newKey","user","hungarianKey","defaultDecimal","_addNumericSort","zeroRecords","decimal","_fnCompatMap","knew","searchCols","dataSort","_fnReduce","inc","nTh","oDefaults","oOptions","th","origClass","mDataSrc","mRender","attrTest","rowData","innerData","_fnSetObjectDataFn","bAsc","bDesc","_fnAdjustColumnSizing","columns","_fnCalculateColumnWidths","_fnVisibleToColumnIndex","iMatch","aiVis","_fnGetColumns","_fnColumnIndexToVisible","iPos","_fnVisbleColumns","vis","sParam","_fnColumnTypes","jen","ken","detectedType","_fnGetCellData","aoColDefs","aoCols","kLen","aTargets","aDataIn","anTds","oData","_fnCreateTr","trs","_fnGetRowElements","_fnNodeToDataIndex","_fnNodeToColumnIndex","rowIdx","colIdx","draw","defaultContent","cellData","fomatters","_fnSetCellData","_fnGetDataMaster","_fnClearTable","_fnDeleteIndex","iTarget","iTargetIndex","_fnInvalidate","cellWrite","cells","cols","_fnRowAttributes","td","objectRead","cellProcess","tds","rowNode","nTrIn","nTd","_fnBuildHead","column","createHeader","classes","_fnSortAttachListener","_fnRenderer","_fnDrawHead","aoSource","bIncludeHidden","nLocalTr","aoLocal","aApplied","iColumns","iRowspan","iColspan","_fnDraw","ajaxComplete","_fnStart","aPreDraw","_fnProcessingDisplay","anRows","iRowCount","asStripeClasses","iStripes","oLang","bServerSide","aiDisplay","iDisplayStart","iDisplayEnd","_fnAjaxUpdate","iStart","iEnd","iDataIndex","aoData","nRow","sStripe","sZero","_fnReDraw","holdPosition","_fnSort","_fnFilterComplete","_fnAddOptionsHtml","holding","aDom","featureNode","cOption","nNewNode","cNext","sAttr","aSplit","_fnFeatureHtmlLength","_fnFeatureHtmlFilter","_fnFeatureHtmlProcessing","_fnFeatureHtmlTable","_fnFeatureHtmlInfo","_fnFeatureHtmlPaginate","aoFeatures","aanFeatures","aLayout","nTrs","nCell","iColShifted","bUnique","fnShiftCol","nHeader","aReturn","iInitDisplayStart","_fnBuildAjax","ajaxData","ajax","_fnAjaxDataSrc","baseAjax","thrown","_fnAjaxParameters","_fnAjaxUpdateDraw","columnCount","preSearch","preColSearch","dataProp","columnSearch","displayStart","displayLength","legacy","compat","modern","recordsTotal","recordsFiltered","_fnInitComplete","dataSrc","tableId","language","previousSearch","searchFn","searchDelay","jqFilter","_fnThrottle","ev","oInput","iForce","oPrevSearch","aoPrevSearch","fnSaveFilter","oFilter","fnRegex","_fnFilter","_fnFilterColumn","_fnFilterCustom","filters","displayRows","searchStr","smart","caseInsensitive","rpSearch","_fnFilterCreateSearch","prevSearch","displayMaster","invalidated","_fnFilterData","__filter_div","__filter_div_textContent","filterData","wasInvalidated","_fnSearchToCamel","_fnSearchToHung","tid","_fnUpdateInfo","_fnInfoMacros","formatter","iAjaxStart","deferLoading","_fnStringToCss","aData","_fnLengthChange","_fnLengthOverflow","menu","lengths","visRecords","page","pages","_fnPageChange","records","changed","scrollX","scrollY","caption","captionSide","headerClone","footerClone","_div","scroller","scrollHead","scrollBody","scrollFoot","scrollXInner","barWidth","divHeader","divHeaderStyle","divHeaderInner","divHeaderInnerStyle","divHeaderTable","divBodyEl","divBody","divBodyStyle","divFooter","divFooterInner","divFooterTable","tableEl","tableStyle","ie67","headerTrgEls","footerTrgEls","headerSrcEls","footerSrcEls","headerCopy","footerCopy","headerWidths","footerWidths","headerContent","footerContent","correction","sanityWidth","zeroOut","nSizer","scrollBarVis","_fnApplyToChildren","nToSize","iOuterWidth","bScrolling","an1","an2","nNode1","nNode2","__re_html_remove","visibleColumns","headerCells","tableWidthAttr","tableContainer","userInputs","columnIdx","styleWidth","_fnConvertToWidth","tmpTable","_fnGetWidestNode","holder","border","bounding","bindResize","_fnGetMaxLenString","maxIdx","aoColumns","aDataSort","sType","srcCol","fixedObj","nestedSort","aiOrig","oExtSort","sortCol","formatters","_fnSortData","test","dataA","dataB","nextSort","oAria","asSorting","sTitle","_fnSortListener","nextSortIdx","sortIdx","attachTo","_fnBindAction","oldSort","sortClass","customSort","customData","_fnImplementState","abStateLoad","level","tn","mappedName","breakRefs","sStore","sName","callbackArr","host","__apiStruct","__arrayProto","_toSettings","jq","tables","ctxSettings","alwaysNew","apiInst","_selector_row_indexes","apiSelector","struct","methodScoping","struc","heir","pluralName","singularName","__table_selector","paging","__reload","resetPaging","_selector_run","selectFn","selectorType","_selector_opts","_selector_first","displayFiltered","displayFilteredMap","__row_selector","run","selInt","cellIdx","rowObj","thatIdx","loopRow","loopCells","newRows","modRows","idFn","ids","__details_add","addRow","__details_state","__details_remove","__details_display","__details_events","drawEvent","colvisEvent","destroyEvent","visible","_emp","_child_obj","_child_mth","__re_column_selector","__columnData","r1","r2","__column_selector","names","visColumns","jqResult","__setColumnVis","insertBefore","calc","__cell_selector","allCells","fnSelector","rowSelector","columnSelector","internalOpts","cellsNoOpts","caseInsen","aThis","aThat","iThis","iThat","foot","jqRows","jqTable","jqTbody","jqWrapper","removedMethod","arg4","plural","toFormat","paginate","extPagination","_numbers","half","numbers","aria","btnDisplay","btnClass","counter","attach","tabIndex","disabledClass","clickHandler","activeEl","__numericReplace","decimalPlace","re1","re2","__htmlEscapeEntities","__mld","momentFn","luxonFn","dateFn","__mlWarning","__mldObj","__mlHelper","localeString","typeName","__thousands","__decimal","thousands","postfix","negative","flo","intPart","floatPart","DT","DTBS","Mes","meses","tablaDom","tabla","obtenerAdjudicaciones","luxon.DateTime","data2","innerNum","interval","bitDiff","bound","dec","_hoisted_1","_hoisted_2","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_createElementVNode","$options","$props","_normalizeStyle","_renderSlot","_toDisplayString","$data","_imports_1$8","modalAyuda","modalCargarArchivo","modalCargarArchivoNombreArchivo","modalCargarArchivoPesoArchivo","peso","formater","modalCargarArchivoVerArchivo","modalCargarArchivoDom","inputFile","nOS","mostrarModalCargarArchivo","instancia","cargarArchivo","progressEvent","obtenerEstadoDocumento","obtenerClasesEstadoDocumento","timeline","barCircular","pestania","reactiveCliente","modalId","clienteDocumentosEntregados","clienteTotalDocumentos","CheckProgreso","CheckStyleProceso","cargarBarraCircular","escrituracion","progreso","filtrarMaterialApoyo","resultadoBusqueda","materialApoyo","arrayCopy","crearStyle","crearClass","cargarElementos","crearRuta","menuMaterialApoyo","intervalo","probar","_imports_0$a","login","_imports_0$9","_imports_1$7","_imports_2$6","_imports_3$6","_imports_4$4","_imports_5$4","_imports_6$3","_imports_7$1","_imports_8$1","_imports_0$8","_imports_1$6","_imports_2$5","_imports_3$5","_imports_0$7","notarias","mostrarPopUp","_imports_0$6","_imports_1$5","_imports_2$4","_imports_3$4","URL","_imports_0$5","_imports_0$4","_imports_1$4","_imports_2$3","_imports_3$3","_imports_4$3","_imports_5$3","_imports_6$2","_imports_1$3","_imports_2$2","_imports_3$2","_imports_4$2","_imports_5$2","Imaganes","_imports_0$3","tooltipTriggerEl","bootstrap.Tooltip","_imports_1$2","_imports_2$1","_imports_3$1","_imports_4$1","_imports_5$1","_imports_6$1","_imports_7","_imports_8","_imports_9","_imports_10","estadoCuentaDescuentos","_imports_0$2","_imports_1$1","seguro","garantias","ObtenerCertificadoDanios","mostrarMenor","mostrarMuerte","opcionales","documentosVida","mostrarDocumento","mostrarEnlace","mostrarOpcionales","enviarNotificacion","danios","CrearSiniestro","DocumentoSiniestro","empleadoGobierno","doc9","doc10","fechaSiniestro","siniestro","siniestroDanio","cp","mostrarMonto","guardarDatosSiniestros","mostrarSpinner","guardarDocuemento","rutas","tipoSeguro","listaSiniestros","mostrarVida","mostrarInvalidez","mostrarDesempeno","mostrarDanios","siniestroId","code6","validador","reg","cerrarModalCodigo","validarPin","emit","cerrarModalContactos","mostrarModalCodigo","mediosContactos","contratoIdFacturar","datosFacturacion","regimenesFiscales","colonias","ciudad","fileIdentificacion","mostrarFileIdentificacion","fileCedula","mostrarFileCedula","mostrarDescargaFactura","urlFactura","recargarPantalla","notificacion","respIdentificaion","respCedula","guardarFacturacion","obtenerArchivoCedula","visualizarArchivoCedula","personas","informacionCliente","archivosDomiciliacion","datosCliente","apellidoMaterno","cuentaSeleccionada","mostrarFormulario","contratosGuardados","archivoID","archivoEdo","archivoIDTercero","archivoEdoTercero","motsrarNombreArchivoID","motsrarNombreArchivoEdo","motsrarNombreArchivoIDTercero","motsrarNombreArchivoEdoTercero","motsrarNombreArchivoFormato","informacionContratosGuardados","telefonoTercero","contratosDomiciliados","getValidacion","archivosEnviar","respNotificaciones","obtenerDatosCliente","apellidoPaterno","obtenerDatosTercero","obtenerArchivoIdTercero","nuevoDocDomi","isEmptyObject","obtenerArchivoID","obtenerArchivoEdoTercero","obtenerArchivoEdo","cargaFormato","capturaDatosDomiciliacion","bancos","regresarFormularioDomiciliacion","guardarDatosDomiciliacion","reactiveCorreoSiniestro","CuerpoCorreo","EnviarCorreoSinietro","cards","_imports_0$1","_imports_1","_imports_2","_imports_3","_imports_4","_imports_5","_imports_6","_imports_0","objetoPre","datos","operacionId","fechaFormateada","cotitularTemporal","obligadoTemporal","garanteTemporal","tipos_ingresos_apoyo_objeto","figuraActual","posicionObjetoDeFigura","tipo_ingreso","tipo_ingreso_apoyo","existeObjetoDeFigura","useStoreDocumentos","documentoID","storeTitular","useStoreTitular","storeDocumentos","clienteStore","asignarFiguraInicial","operacion","etapaTitulacion","indexPasoActual","obtenerURL","llenarStepper","autoScrollInicio","theElement","arrayTest","mostrarDocumentosChecklistTitular","guardarMensaje","mensajeUser","mensajeDeUsuario","formatearFecha","horario","formatearTexto","textoChat","objEtapas","etapas","etapaTitulacionActiva","scriptRel","__vitePreload","baseModule","isCss","cssSelector","rej","formP","formDP","formDT","FormularioG","simboloPesos","amount","exp","onlyNumbers","$event","formulario","totalGastos","validar","siguiente","funcion","vendedor_fisica","tipo_vendedor","estadoCivil","catalogoEstadoCivil","catalogoRegimenMatrimonial","esCasado","esCasadoEnSociedadConyugal","opciones","validarEstadoCivilRegimenMatrimonial","CargarCatalogoEstadoCivil","CargarCatalogoRegimenMatrimonial","asignarVendedor","formPG","formOG","modalPdf","muestraPopup","formUF","_hoisted_47","misDatos","figuraObtenida","documentosTotales","documentosAceptados","documentosRechazados","documentosOpcionales","documentosAsignados","documentosPorEntidades","entidadesConAcento","categoriasConAcento","documentoAcargar","categoriaAcargar","comentarioAcargar","entidadAcargar","cargandoDocumento","jsonCargado","parametrosAcargar","docuID","comentario","observarDocumentoTitular","docID","guardarDocumento","iniciarChecklist","funcionConsumirJSON","colocarContador","indexGuardado","sumaObjetos","guardados","pendientes","asignados","indexCounter","RutasAreaCliente","urlExperiencia","_to","AppAreaCliente","Siniestro","EstudioSocioeconomico","ObligadoSolidario","Escrituracion","Adjudiacion","Bienvenida","Tramites","Liberacion","Preventa","Pagos","Liquidacion","Titulacion","Seguros","Venta","ProgramaRecicla","CCFinanciamiento","Perfil","Login","Crear","Recuperacion","RecuperacionCorreo","CCHome","Adjudicaciones","EstudioSocioeconomico2","FormularioLayout","ChecklistDocumentos","DatosGenerales","AnalisisAes","FirmaAes","Ingresos","Gastos","Patrimonio","Vendedor","ObservacionesGenerales","UsoFinanciamiento","MaterialesApoyo","ReporteSeguroVida","Guia","SeguroVida","SeguroDanios","Facturacion","Domiciliacion","AppOffline","ClienteAplicacion","RouterViewGenerico","VueRouter.createRouter","VueRouter.createWebHistory","savedPosition","VueRouter.isNavigationFailure","_component_router_view","_component_hir_toast","S2","require","requirejs","undef","req","defined","waiting","defining","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","normalizedBaseParts","baseParts","starMap","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","makeRelParts","relParts","relResourceName","makeConfig","cjsModule","callbackType","usingExports","alt","cfg","Utils","ChildClass","SuperClass","__hasProp","BaseConstructor","getMethods","theClass","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","randomChar","originalKey","dataLevel","$el","markup","replaceMap","select2Id","destinationClasses","clazz","sourceClasses","replacements","Results","$element","dataAdapter","$results","escapeMarkup","$message","$option","$dropdown","$resultsContainer","sorter","$selected","selectedIds","loadingMore","loading","$loading","$children","$child","$childrenContainer","$container","$highlighted","currentIndex","$next","currentOffset","nextTop","nextOffset","nextBottom","isAtTop","isAtBottom","offsetDelta","KEYS","BaseSelection","$selection","resultsId","$target","$select","$all","$selectionContainer","SingleSelection","$rendered","MultipleSelection","$remove","$selections","selectionIdPrefix","selectionId","removeItem","Placeholder","decorated","$placeholder","placeholderTitle","singlePlaceholder","multipleSelections","AllowClear","$clear","previousVal","unselectData","removeAll","Search","searchLabel","$search","$previousChoice","disableInputEvents","searchHadFocus","minimumWidth","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","translations","diacritics","BaseAdapter","SelectAdapter","selectedElement","currentData","normalizedData","ArrayAdapter","elm","$existing","existingIds","onlyItem","$existingOption","existingData","$newOption","AjaxAdapter","$request","Tags","tags","createTag","insertTag","checkChildren","optionText","paramsTerm","checkText","term","Tokenizer","tokenizer","createAndSelect","$existingOptions","tokenData","separators","termChar","partParams","MinimumInputLength","$e","MaximumInputLength","MaximumSelectionLength","successCallback","showSearch","HidePlaceholder","modifiedData","InfiniteScroll","isLoadMoreVisible","loadingMoreOffset","AttachBody","scrollEvent","resizeEvent","orientationEvent","$watchers","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","dropdown","enoughRoomAbove","enoughRoomBelow","$offsetParent","countResults","MinimumResultsForSearch","SelectOnClose","$highlightedResults","CloseOnSelect","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","overChars","remainingChars","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","SearchableDropdown","uniqueLanguages","stripDiacritics","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","languageParts","baseLanguage","debug","languageData","convertedData","Options","excludedData","dataset","upperCaseLetter","dataName","dataValue","camelDataName","Select2","DataAdapter","SelectionAdapter","DropdownAdapter","ResultsAdapter","initialData","elementWidth","computedStyle","nonRelayEvents","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","thisMethods","instanceOptions","select2","vm","dc","bootstrap.Toast","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","_typeof","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","_arr","arr2","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","_ref$userAgent","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","RESERVED_CLASSES","getAttrConfig","coerce","_default","_onChangeCb","onChange","meaninglessTransform","insertCss","headChildren","beforeChild","idPool","nextUniqueId","classArray","htmlEscape","joinAttributes","joinStyles","styleName","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","innerTranslate","innerScale","innerRotate","transformForCss","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","baseStyles","dcp","drc","fp","rc","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","InjectCSS","domready","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","iconFromMapping","mapping","iconName","bindInternal4","thisContext","subject","ucs2decode","output","toHex","unicode","decoded","codePointAt","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","shims","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","isReserved","getIconName","cssPrefix","cls","lookup","hasRegular","shimLookups","shim","maybeNameMaybeUnicode","getCanonicalPrefix","byUnicode","byLigature","ligature","byAlias","byOldName","byOldUnicode","oldUnicode","newUnicode","getDefaultUsablePrefix","emptyCanonicalIcon","styleOrPrefix","_params$family","family","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","canonical","aliasIconName","Library","_this","definitions","additions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","registerPlugins","nextPlugins","mixout","tk","sk","chainHooks","hookFns","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","noAuto","dom","autoReplaceSvgRoot","autoReplace","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","asIcon","mask","asSymbol","makeInlineSvgAbstract","_params$icons","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","uploadedIconWidthStyle","makeLayersTextAbstract","_params$watchable2","styleString","makeLayersCounterAbstract","styles$1","asFoundIcon","_icon$slice","_icon$slice2","vectorData","missingIconResolutionMixin","maybeNotifyMissing","findIcon","noop$1","preamble","begin","perf","noop$2","isWatched","i2svg","hasPrefixAndIcon","hasBeenReplaced","getMutator","mutators","mutator","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","nodeAsComment","comment","abstract","forSvg","splitClasses","newInnerHTML","performOperationSync","op","perform","callbackFunction","frame","mark","disableObservation","enableObservation","mo","observe","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","defaultPrefix","mutationRecord","_getCanonicalIcon","disconnect","styleParser","classParser","existingPrefix","existingIconName","innerText","attributesParser","extraAttributes","blankMeta","parseMeta","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","prefixesDomQuery","candidates","resolvedMutations","onNode","resolveIcons","maybeIconDefinition","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","providers$$1","_params$node","_params$callback","Layers","assembler","LayersCounter","LayersText","computedFontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","hexValueFromContent","cleaned","codePoint","isPrependTen","isDoubled","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","fontWeight","_content","_hexValueFromContent","hexValue","isSecondary","isV4","iconIdentifier","iconName4","processable","searchPseudoElements","operations","PseudoElements","_unwatched","MutationObserver$1","parseTransformString","transformString","PowerTransforms","ALL_SPACE","fillBlack","deGroup","Masks","maskData","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","defs","MissingIconIndicator","reduceMotion","gChildren","FILL","ANIMATION_BASE","OPACITY_ANIMATE","dot","SvgSymbols","symbolData","plugins","library$1","dom$1","fa0","fa1","fa2","fa3","fa4","fa5","fa6","fa7","fa8","fa9","faFillDrip","faArrowsToCircle","faCircleChevronRight","faChevronCircleRight","faAt","faTrashCan","faTrashAlt","faTextHeight","faUserXmark","faUserTimes","faStethoscope","faMessage","faCommentAlt","faInfo","faDownLeftAndUpRightToCenter","faCompressAlt","faExplosion","faFileLines","faFileAlt","faFileText","faWaveSquare","faRing","faBuildingUn","faDiceThree","faCalendarDays","faCalendarAlt","faAnchorCircleCheck","faBuildingCircleArrowRight","faVolleyball","faVolleyballBall","faArrowsUpToLine","faSortDown","faSortDesc","faCircleMinus","faMinusCircle","faDoorOpen","faRightFromBracket","faSignOutAlt","faAtom","faSoap","faIcons","faHeartMusicCameraBolt","faMicrophoneLinesSlash","faMicrophoneAltSlash","faBridgeCircleCheck","faPumpMedical","faFingerprint","faHandPointRight","faMagnifyingGlassLocation","faSearchLocation","faForwardStep","faStepForward","faFaceSmileBeam","faSmileBeam","faFlagCheckered","faFootball","faFootballBall","faSchoolCircleExclamation","faCrop","faAnglesDown","faAngleDoubleDown","faUsersRectangle","faPeopleRoof","faPeopleLine","faBeerMugEmpty","faBeer","faDiagramPredecessor","faArrowUpLong","faLongArrowUp","faFireFlameSimple","faBurn","faPerson","faMale","faLaptop","faFileCsv","faMenorah","faTruckPlane","faRecordVinyl","faFaceGrinStars","faGrinStars","faBong","faSpaghettiMonsterFlying","faPastafarianism","faArrowDownUpAcrossLine","faSpoon","faUtensilSpoon","faJarWheat","faEnvelopesBulk","faMailBulk","faFileCircleExclamation","faCircleH","faHospitalSymbol","faPager","faAddressBook","faContactBook","faStrikethrough","faK","faLandmarkFlag","faPencil","faPencilAlt","faBackward","faCaretRight","faComments","faPaste","faFileClipboard","faCodePullRequest","faClipboardList","faTruckRampBox","faTruckLoading","faUserCheck","faVialVirus","faSheetPlastic","faBlog","faUserNinja","faPersonArrowUpFromLine","faScrollTorah","faTorah","faBroomBall","faQuidditch","faQuidditchBroomBall","faToggleOff","faBoxArchive","faArchive","faPersonDrowning","faArrowDown91","faSortNumericDesc","faSortNumericDownAlt","faFaceGrinTongueSquint","faGrinTongueSquint","faSprayCan","faTruckMonster","faW","faEarthAfrica","faGlobeAfrica","faRainbow","faCircleNotch","faTabletScreenButton","faTabletAlt","faPaw","faCloud","faTrowelBricks","faFaceFlushed","faFlushed","faHospitalUser","faTentArrowLeftRight","faGavel","faLegal","faBinoculars","faMicrophoneSlash","faBoxTissue","faMotorcycle","faBellConcierge","faConciergeBell","faPenRuler","faPencilRuler","faPeopleArrows","faPeopleArrowsLeftRight","faMarsAndVenusBurst","faSquareCaretRight","faCaretSquareRight","faScissors","faCut","faSunPlantWilt","faToiletsPortable","faHockeyPuck","faTable","faMagnifyingGlassArrowRight","faTachographDigital","faDigitalTachograph","faUsersSlash","faClover","faReply","faMailReply","faStarAndCrescent","faHouseFire","faSquareMinus","faMinusSquare","faHelicopter","faCompass","faSquareCaretDown","faCaretSquareDown","faFileCircleQuestion","faLaptopCode","faSwatchbook","faPrescriptionBottle","faBars","faNavicon","faPeopleGroup","faHourglassEnd","faHourglass3","faHeartCrack","faHeartBroken","faSquareUpRight","faExternalLinkSquareAlt","faFaceKissBeam","faKissBeam","faFilm","faRulerHorizontal","faPeopleRobbery","faLightbulb","faCaretLeft","faCircleExclamation","faExclamationCircle","faSchoolCircleXmark","faArrowRightFromBracket","faSignOut","faCircleChevronDown","faChevronCircleDown","faUnlockKeyhole","faUnlockAlt","faCloudShowersHeavy","faHeadphonesSimple","faHeadphonesAlt","faSitemap","faCircleDollarToSlot","faDonate","faMemory","faRoadSpikes","faFireBurner","faFlag","faHanukiah","faFeather","faVolumeLow","faVolumeDown","faCommentSlash","faCloudSunRain","faCompress","faWheatAwn","faWheatAlt","faAnkh","faHandsHoldingChild","faAsterisk","faSquareCheck","faCheckSquare","faPesetaSign","faHeading","faHeader","faGhost","faList","faListSquares","faSquarePhoneFlip","faPhoneSquareAlt","faCartPlus","faGamepad","faCircleDot","faDotCircle","faFaceDizzy","faDizzy","faEgg","faHouseMedicalCircleXmark","faCampground","faFolderPlus","faFutbol","faFutbolBall","faSoccerBall","faPaintbrush","faPaintBrush","faLock","faGasPump","faHotTubPerson","faHotTub","faMapLocation","faMapMarked","faHouseFloodWater","faTree","faBridgeLock","faSackDollar","faPenToSquare","faEdit","faCarSide","faShareNodes","faShareAlt","faHeartCircleMinus","faHourglassHalf","faHourglass2","faMicroscope","faSink","faBagShopping","faShoppingBag","faArrowDownZA","faSortAlphaDesc","faSortAlphaDownAlt","faMitten","faPersonRays","faUsers","faEyeSlash","faFlaskVial","faHand","faHandPaper","faOm","faWorm","faHouseCircleXmark","faPlug","faChevronUp","faHandSpock","faStopwatch","faFaceKiss","faKiss","faBridgeCircleXmark","faFaceGrinTongue","faGrinTongue","faChessBishop","faFaceGrinWink","faGrinWink","faEarDeaf","faDeaf","faDeafness","faHardOfHearing","faRoadCircleCheck","faDiceFive","faSquareRss","faRssSquare","faLandMineOn","faICursor","faStamp","faStairs","faI","faHryvniaSign","faHryvnia","faPills","faFaceGrinWide","faGrinAlt","faTooth","faV","faBicycle","faStaffSnake","faRodAsclepius","faRodSnake","faStaffAesculapius","faHeadSideCoughSlash","faTruckMedical","faAmbulance","faWheatAwnCircleExclamation","faSnowman","faMortarPestle","faRoadBarrier","faSchool","faIgloo","faJoint","faAngleRight","faHorse","faQ","faG","faNotesMedical","faTemperatureHalf","faTemperature2","faThermometer2","faThermometerHalf","faDongSign","faCapsules","faPooStorm","faPooBolt","faFaceFrownOpen","faFrownOpen","faHandPointUp","faMoneyBill","faBookmark","faAlignJustify","faUmbrellaBeach","faHelmetUn","faBullseye","faBacon","faHandPointDown","faArrowUpFromBracket","faFolder","faFolderBlank","faFileWaveform","faFileMedicalAlt","faRadiation","faChartSimple","faMarsStroke","faVial","faGauge","faDashboard","faGaugeMed","faTachometerAltAverage","faWandMagicSparkles","faMagicWandSparkles","faE","faPenClip","faPenAlt","faBridgeCircleExclamation","faUser","faSchoolCircleCheck","faDumpster","faVanShuttle","faShuttleVan","faBuildingUser","faSquareCaretLeft","faCaretSquareLeft","faHighlighter","faKey","faBullhorn","faGlobe","faSynagogue","faPersonHalfDress","faRoadBridge","faLocationArrow","faC","faTabletButton","faBuildingLock","faPizzaSlice","faMoneyBillWave","faChartArea","faAreaChart","faHouseFlag","faPersonCircleMinus","faBan","faCancel","faCameraRotate","faSprayCanSparkles","faAirFreshener","faStar","faRepeat","faCross","faBox","faVenusMars","faArrowPointer","faMousePointer","faMaximize","faExpandArrowsAlt","faChargingStation","faShapes","faTriangleCircleSquare","faShuffle","faRandom","faPersonRunning","faRunning","faMobileRetro","faGripLinesVertical","faSpider","faHandsBound","faFileInvoiceDollar","faPlaneCircleExclamation","faXRay","faSpellCheck","faSlash","faComputerMouse","faMouse","faArrowRightToBracket","faSignIn","faShopSlash","faStoreAltSlash","faServer","faVirusCovidSlash","faShopLock","faHourglassStart","faHourglass1","faBlenderPhone","faBuildingWheat","faPersonBreastfeeding","faRightToBracket","faSignInAlt","faVenus","faPassport","faHeartPulse","faHeartbeat","faPeopleCarryBox","faPeopleCarry","faTemperatureHigh","faMicrochip","faCrown","faWeightHanging","faXmarksLines","faFilePrescription","faWeightScale","faWeight","faUserGroup","faUserFriends","faArrowUpAZ","faSortAlphaUp","faChessKnight","faFaceLaughSquint","faLaughSquint","faWheelchair","faCircleArrowUp","faArrowCircleUp","faToggleOn","faPersonWalking","faWalking","faL","faFire","faBedPulse","faProcedures","faShuttleSpace","faSpaceShuttle","faFaceLaugh","faLaugh","faFolderOpen","faHeartCirclePlus","faCodeFork","faCity","faMicrophoneLines","faMicrophoneAlt","faPepperHot","faUnlock","faColonSign","faHeadset","faStoreSlash","faRoadCircleXmark","faUserMinus","faMarsStrokeUp","faMarsStrokeV","faChampagneGlasses","faGlassCheers","faClipboard","faHouseCircleExclamation","faFileArrowUp","faFileUpload","faWifi","faWifi3","faWifiStrong","faBath","faBathtub","faUnderline","faUserPen","faUserEdit","faSignature","faStroopwafel","faBold","faAnchorLock","faBuildingNgo","faManatSign","faNotEqual","faBorderTopLeft","faBorderStyle","faMapLocationDot","faMapMarkedAlt","faJedi","faSquarePollVertical","faPoll","faMugHot","faCarBattery","faBatteryCar","faGift","faDiceTwo","faChessQueen","faGlasses","faChessBoard","faBuildingCircleCheck","faPersonChalkboard","faMarsStrokeRight","faMarsStrokeH","faHandBackFist","faHandRock","faSquareCaretUp","faCaretSquareUp","faCloudShowersWater","faChartBar","faBarChart","faHandsBubbles","faHandsWash","faLessThanEqual","faTrain","faEyeLowVision","faLowVision","faCrow","faSailboat","faWindowRestore","faSquarePlus","faPlusSquare","faToriiGate","faFrog","faBucket","faImage","faMicrophone","faCow","faCaretUp","faScrewdriver","faFolderClosed","faHouseTsunami","faSquareNfi","faArrowUpFromGroundWater","faMartiniGlass","faGlassMartiniAlt","faRotateLeft","faRotateBack","faRotateBackward","faUndoAlt","faTableColumns","faColumns","faLemon","faHeadSideMask","faHandshake","faGem","faDolly","faDollyBox","faSmoking","faMinimize","faCompressArrowsAlt","faMonument","faSnowplow","faAnglesRight","faAngleDoubleRight","faCannabis","faCirclePlay","faPlayCircle","faTablets","faEthernet","faEuroSign","faEur","faEuro","faChair","faCircleCheck","faCheckCircle","faCircleStop","faStopCircle","faCompassDrafting","faDraftingCompass","faPlateWheat","faIcicles","faPersonShelter","faNeuter","faIdBadge","faMarker","faFaceLaughBeam","faLaughBeam","faHelicopterSymbol","faUniversalAccess","faCircleChevronUp","faChevronCircleUp","faLariSign","faVolcano","faPersonWalkingDashedLineArrowRight","faSterlingSign","faGbp","faPoundSign","faViruses","faSquarePersonConfined","faUserTie","faArrowDownLong","faLongArrowDown","faTentArrowDownToLine","faCertificate","faReplyAll","faMailReplyAll","faSuitcase","faPersonSkating","faSkating","faFilterCircleDollar","faFunnelDollar","faCameraRetro","faCircleArrowDown","faArrowCircleDown","faFileImport","faArrowRightToFile","faSquareArrowUpRight","faExternalLinkSquare","faBoxOpen","faScroll","faSpa","faLocationPinLock","faPause","faHillAvalanche","faTemperatureEmpty","faTemperature0","faThermometer0","faThermometerEmpty","faBomb","faRegistered","faAddressCard","faContactCard","faVcard","faScaleUnbalancedFlip","faBalanceScaleRight","faSubscript","faDiamondTurnRight","faDirections","faBurst","faHouseLaptop","faLaptopHouse","faFaceTired","faTired","faMoneyBills","faSmog","faCrutch","faFontAwesome","faFontAwesomeFlag","faFontAwesomeLogoFull","faCloudArrowUp","faCloudUpload","faCloudUploadAlt","faPalette","faArrowsTurnRight","faVest","faFerry","faArrowsDownToPeople","faSeedling","faSprout","faLeftRight","faArrowsAltH","faBoxesPacking","faCircleArrowLeft","faArrowCircleLeft","faGroupArrowsRotate","faBowlFood","faCandyCane","faArrowDownWideShort","faSortAmountAsc","faSortAmountDown","faCloudBolt","faThunderstorm","faTextSlash","faRemoveFormat","faFaceSmileWink","faSmileWink","faFileWord","faFilePowerpoint","faArrowsLeftRight","faArrowsH","faHouseLock","faCloudArrowDown","faCloudDownload","faCloudDownloadAlt","faChildren","faChalkboard","faBlackboard","faUserLargeSlash","faUserAltSlash","faEnvelopeOpen","faHandshakeSimpleSlash","faHandshakeAltSlash","faMattressPillow","faGuaraniSign","faArrowsRotate","faRefresh","faSync","faFireExtinguisher","faCruzeiroSign","faGreaterThanEqual","faShieldHalved","faShieldAlt","faBookAtlas","faAtlas","faVirus","faEnvelopeCircleCheck","faLayerGroup","faArrowsToDot","faArchway","faHeartCircleCheck","faHouseChimneyCrack","faHouseDamage","faFileZipper","faFileArchive","faSquare","faMartiniGlassEmpty","faGlassMartini","faCouch","faCediSign","faItalic","faChurch","faCommentsDollar","faDemocrat","faZ","faPersonSkiing","faSkiing","faRoadLock","faA","faTemperatureArrowDown","faTemperatureDown","faFeatherPointed","faFeatherAlt","faP","faSnowflake","faNewspaper","faRectangleAd","faAd","faCircleArrowRight","faArrowCircleRight","faFilterCircleXmark","faLocust","faSort","faUnsorted","faListOl","faList12","faListNumeric","faPersonDressBurst","faMoneyCheckDollar","faMoneyCheckAlt","faVectorSquare","faBreadSlice","faLanguage","faFaceKissWinkHeart","faKissWinkHeart","faFilter","faQuestion","faFileSignature","faUpDownLeftRight","faArrowsAlt","faHouseChimneyUser","faHandHoldingHeart","faPuzzlePiece","faMoneyCheck","faStarHalfStroke","faStarHalfAlt","faCode","faWhiskeyGlass","faGlassWhiskey","faBuildingCircleExclamation","faMagnifyingGlassChart","faArrowUpRightFromSquare","faExternalLink","faCubesStacked","faWonSign","faKrw","faWon","faVirusCovid","faAustralSign","faF","faLeaf","faRoad","faTaxi","faCab","faPersonCirclePlus","faChartPie","faPieChart","faBoltLightning","faSackXmark","faFileExcel","faFileContract","faFishFins","faBuildingFlag","faFaceGrinBeam","faGrinBeam","faObjectUngroup","faPoop","faLocationPin","faMapMarker","faKaaba","faToiletPaper","faHelmetSafety","faHardHat","faHatHard","faEject","faCircleRight","faArrowAltCircleRight","faPlaneCircleCheck","faFaceRollingEyes","faMehRollingEyes","faObjectGroup","faChartLine","faLineChart","faMaskVentilator","faArrowRight","faSignsPost","faMapSigns","faCashRegister","faPersonCircleQuestion","faH","faTarp","faScrewdriverWrench","faTools","faArrowsToEye","faPlugCircleBolt","faHeart","faMarsAndVenus","faHouseUser","faHomeUser","faDumpsterFire","faHouseCrack","faMartiniGlassCitrus","faCocktail","faFaceSurprise","faSurprise","faBottleWater","faCirclePause","faPauseCircle","faToiletPaperSlash","faAppleWhole","faAppleAlt","faKitchenSet","faR","faTemperatureQuarter","faTemperature1","faThermometer1","faThermometerQuarter","faCube","faBitcoinSign","faShieldDog","faSolarPanel","faLockOpen","faElevator","faMoneyBillTransfer","faMoneyBillTrendUp","faHouseFloodWaterCircleArrowRight","faSquarePollHorizontal","faPollH","faCircle","faBackwardFast","faFastBackward","faRecycle","faUserAstronaut","faPlaneSlash","faTrademark","faBasketball","faBasketballBall","faSatelliteDish","faCircleUp","faArrowAltCircleUp","faMobileScreenButton","faMobileAlt","faVolumeHigh","faVolumeUp","faUsersRays","faWallet","faClipboardCheck","faFileAudio","faBurger","faHamburger","faWrench","faBugs","faRupeeSign","faRupee","faFileImage","faCircleQuestion","faQuestionCircle","faPlaneDeparture","faHandshakeSlash","faBookBookmark","faCodeBranch","faHatCowboy","faBridge","faPhoneFlip","faPhoneAlt","faTruckFront","faCat","faAnchorCircleExclamation","faTruckField","faRoute","faClipboardQuestion","faPanorama","faCommentMedical","faTeethOpen","faFileCircleMinus","faTags","faWineGlass","faForwardFast","faFastForward","faFaceMehBlank","faMehBlank","faSquareParking","faParking","faHouseSignal","faBarsProgress","faTasksAlt","faFaucetDrip","faCartFlatbed","faDollyFlatbed","faBanSmoking","faSmokingBan","faTerminal","faMobileButton","faHouseMedicalFlag","faBasketShopping","faShoppingBasket","faTape","faBusSimple","faBusAlt","faEye","faFaceSadCry","faSadCry","faAudioDescription","faPersonMilitaryToPerson","faFileShield","faUserSlash","faPen","faTowerObservation","faFileCode","faSignal","faSignal5","faSignalPerfect","faBus","faHeartCircleXmark","faHouseChimney","faHomeLg","faWindowMaximize","faFaceFrown","faFrown","faPrescription","faShop","faStoreAlt","faFloppyDisk","faSave","faVihara","faScaleUnbalanced","faBalanceScaleLeft","faSortUp","faSortAsc","faCommentDots","faCommenting","faPlantWilt","faDiamond","faFaceGrinSquint","faGrinSquint","faHandHoldingDollar","faHandHoldingUsd","faBacterium","faHandPointer","faDrumSteelpan","faHandScissors","faHandsPraying","faPrayingHands","faArrowRotateRight","faArrowRightRotate","faArrowRotateForward","faRedo","faBiohazard","faLocationCrosshairs","faLocation","faMarsDouble","faChildDress","faUsersBetweenLines","faLungsVirus","faFaceGrinTears","faGrinTears","faPhone","faCalendarXmark","faCalendarTimes","faChildReaching","faHeadSideVirus","faUserGear","faUserCog","faArrowUp19","faSortNumericUp","faDoorClosed","faShieldVirus","faDiceSix","faMosquitoNet","faBridgeWater","faPersonBooth","faTextWidth","faHatWizard","faPenFancy","faPersonDigging","faDigging","faTrash","faGaugeSimple","faGaugeSimpleMed","faTachometerAverage","faBookMedical","faPoo","faQuoteRight","faQuoteRightAlt","faShirt","faTShirt","faTshirt","faCubes","faDivide","faTengeSign","faTenge","faHeadphones","faHandsHolding","faHandsClapping","faRepublican","faArrowLeft","faPersonCircleXmark","faRuler","faAlignLeft","faDiceD6","faRestroom","faJ","faUsersViewfinder","faFileVideo","faUpRightFromSquare","faExternalLinkAlt","faTableCells","faTh","faFilePdf","faBookBible","faBible","faO","faSuitcaseMedical","faMedkit","faUserSecret","faOtter","faPersonDress","faFemale","faCommentDollar","faBusinessTime","faBriefcaseClock","faTableCellsLarge","faThLarge","faBookTanakh","faTanakh","faPhoneVolume","faVolumeControlPhone","faHatCowboySide","faClipboardUser","faChild","faLiraSign","faSatellite","faPlaneLock","faTag","faComment","faCakeCandles","faBirthdayCake","faCake","faEnvelope","faAnglesUp","faAngleDoubleUp","faPaperclip","faArrowRightToCity","faRibbon","faLungs","faArrowUp91","faSortNumericUpAlt","faLitecoinSign","faBorderNone","faCircleNodes","faParachuteBox","faIndent","faTruckFieldUn","faHourglass","faHourglassEmpty","faMountain","faUserDoctor","faUserMd","faCircleInfo","faInfoCircle","faCloudMeatball","faCamera","faCameraAlt","faSquareVirus","faMeteor","faCarOn","faSleigh","faArrowDown19","faSortNumericAsc","faSortNumericDown","faHandHoldingDroplet","faHandHoldingWater","faWater","faCalendarCheck","faBraille","faPrescriptionBottleMedical","faPrescriptionBottleAlt","faLandmark","faTruck","faCrosshairs","faPersonCane","faTent","faVestPatches","faCheckDouble","faArrowDownAZ","faSortAlphaAsc","faSortAlphaDown","faMoneyBillWheat","faCookie","faArrowRotateLeft","faArrowLeftRotate","faArrowRotateBack","faArrowRotateBackward","faUndo","faHardDrive","faHdd","faFaceGrinSquintTears","faGrinSquintTears","faDumbbell","faRectangleList","faListAlt","faTarpDroplet","faHouseMedicalCircleCheck","faPersonSkiingNordic","faSkiingNordic","faCalendarPlus","faPlaneArrival","faCircleLeft","faArrowAltCircleLeft","faTrainSubway","faSubway","faChartGantt","faIndianRupeeSign","faIndianRupee","faInr","faCropSimple","faCropAlt","faMoneyBill1","faMoneyBillAlt","faLeftLong","faLongArrowAltLeft","faDna","faVirusSlash","faMinus","faSubtract","faChildRifle","faChess","faArrowLeftLong","faLongArrowLeft","faPlugCircleCheck","faStreetView","faFrancSign","faVolumeOff","faHandsAslInterpreting","faAmericanSignLanguageInterpreting","faAslInterpreting","faHandsAmericanSignLanguageInterpreting","faGear","faCog","faDropletSlash","faTintSlash","faMosque","faMosquito","faStarOfDavid","faPersonMilitaryRifle","faCartShopping","faShoppingCart","faVials","faPlugCirclePlus","faPlaceOfWorship","faGripVertical","faArrowTurnUp","faLevelUp","faU","faSquareRootVariable","faSquareRootAlt","faClock","faClockFour","faBackwardStep","faStepBackward","faPallet","faFaucet","faBaseballBatBall","faS","faTimeline","faKeyboard","faCaretDown","faHouseChimneyMedical","faClinicMedical","faTemperatureThreeQuarters","faTemperature3","faThermometer3","faThermometerThreeQuarters","faMobileScreen","faMobileAndroidAlt","faPlaneUp","faPiggyBank","faBatteryHalf","faBattery3","faMountainCity","faCoins","faKhanda","faSliders","faSlidersH","faFolderTree","faNetworkWired","faMapPin","faHamsa","faCentSign","faFlask","faPersonPregnant","faWandSparkles","faEllipsisVertical","faEllipsisV","faTicket","faPowerOff","faRightLong","faLongArrowAltRight","faFlagUsa","faLaptopFile","faTty","faTeletype","faDiagramNext","faPersonRifle","faHouseMedicalCircleExclamation","faClosedCaptioning","faPersonHiking","faHiking","faVenusDouble","faImages","faCalculator","faPeoplePulling","faN","faCableCar","faTram","faCloudRain","faBuildingCircleXmark","faShip","faArrowsDownToLine","faDownload","faFaceGrin","faGrin","faDeleteLeft","faBackspace","faEyeDropper","faEyeDropperEmpty","faEyedropper","faFileCircleCheck","faForward","faMobile","faMobileAndroid","faMobilePhone","faFaceMeh","faMeh","faAlignCenter","faBookSkull","faBookDead","faIdCard","faDriversLicense","faOutdent","faDedent","faHeartCircleExclamation","faHouse","faHome","faHomeAlt","faHomeLgAlt","faCalendarWeek","faLaptopMedical","faB","faFileMedical","faDiceOne","faKiwiBird","faArrowRightArrowLeft","faExchange","faRotateRight","faRedoAlt","faRotateForward","faUtensils","faCutlery","faArrowUpWideShort","faSortAmountUp","faMillSign","faBowlRice","faSkull","faTowerBroadcast","faBroadcastTower","faTruckPickup","faUpLong","faLongArrowAltUp","faStop","faCodeMerge","faUpload","faHurricane","faMound","faToiletPortable","faCompactDisc","faFileArrowDown","faFileDownload","faCaravan","faShieldCat","faBolt","faZap","faGlassWater","faOilWell","faVault","faMars","faToilet","faPlaneCircleXmark","faYenSign","faCny","faJpy","faRmb","faYen","faRubleSign","faRouble","faRub","faRuble","faSun","faGuitar","faFaceLaughWink","faLaughWink","faHorseHead","faBoreHole","faIndustry","faCircleDown","faArrowAltCircleDown","faArrowsTurnToDots","faFlorinSign","faArrowDownShortWide","faSortAmountDesc","faSortAmountDownAlt","faLessThan","faAngleDown","faCarTunnel","faHeadSideCough","faGripLines","faThumbsDown","faUserLock","faArrowRightLong","faLongArrowRight","faAnchorCircleXmark","faEllipsis","faEllipsisH","faChessPawn","faKitMedical","faFirstAid","faPersonThroughWindow","faToolbox","faHandsHoldingCircle","faBug","faCreditCard","faCreditCardAlt","faCar","faAutomobile","faHandHoldingHand","faBookOpenReader","faBookReader","faMountainSun","faArrowsLeftRightToLine","faDiceD20","faTruckDroplet","faFileCircleXmark","faTemperatureArrowUp","faTemperatureUp","faMedal","faBed","faSquareH","faHSquare","faPodcast","faTemperatureFull","faTemperature4","faThermometer4","faThermometerFull","faBell","faSuperscript","faPlugCircleXmark","faStarOfLife","faPhoneSlash","faPaintRoller","faHandshakeAngle","faHandsHelping","faLocationDot","faMapMarkerAlt","faFile","faGreaterThan","faPersonSwimming","faSwimmer","faArrowDown","faDroplet","faTint","faEraser","faEarthAmericas","faEarth","faEarthAmerica","faGlobeAmericas","faPersonBurst","faDove","faBatteryEmpty","faBattery0","faSocks","faInbox","faSection","faGaugeHigh","faTachometerAlt","faTachometerAltFast","faEnvelopeOpenText","faHospital","faHospitalAlt","faHospitalWide","faWineBottle","faChessRook","faBarsStaggered","faReorder","faStream","faDharmachakra","faHotdog","faPersonWalkingWithCane","faBlind","faDrum","faIceCream","faHeartCircleBolt","faFax","faParagraph","faCheckToSlot","faVoteYea","faStarHalf","faBoxesStacked","faBoxes","faBoxesAlt","faLink","faChain","faEarListen","faAssistiveListeningSystems","faTreeCity","faPlay","faFont","faRupiahSign","faMagnifyingGlass","faSearch","faTableTennisPaddleBall","faPingPongPaddleBall","faTableTennis","faPersonDotsFromLine","faDiagnoses","faTrashCanArrowUp","faTrashRestoreAlt","faNairaSign","faCartArrowDown","faWalkieTalkie","faFilePen","faFileEdit","faReceipt","faSquarePen","faPenSquare","faPencilSquare","faSuitcaseRolling","faPersonCircleExclamation","faChevronDown","faBatteryFull","faBattery","faBattery5","faSkullCrossbones","faCodeCompare","faListUl","faListDots","faSchoolLock","faTowerCell","faDownLong","faLongArrowAltDown","faRankingStar","faChessKing","faPersonHarassing","faBrazilianRealSign","faLandmarkDome","faLandmarkAlt","faArrowUp","faTv","faTelevision","faTvAlt","faShrimp","faListCheck","faTasks","faJugDetergent","faCircleUser","faUserCircle","faUserShield","faWind","faCarBurst","faCarCrash","faY","faPersonSnowboarding","faSnowboarding","faTruckFast","faShippingFast","faFish","faUserGraduate","faCircleHalfStroke","faAdjust","faClapperboard","faCircleRadiation","faRadiationAlt","faBaseball","faBaseballBall","faJetFighterUp","faDiagramProject","faProjectDiagram","faCopy","faVolumeXmark","faVolumeMute","faVolumeTimes","faHandSparkles","faGrip","faGripHorizontal","faShareFromSquare","faShareSquare","faGun","faSquarePhone","faPhoneSquare","faPlus","faAdd","faExpand","faComputer","faXmark","faClose","faMultiply","faRemove","faTimes","faArrowsUpDownLeftRight","faArrows","faChalkboardUser","faChalkboardTeacher","faPesoSign","faBuildingShield","faBaby","faUsersLine","faQuoteLeft","faQuoteLeftAlt","faTractor","faTrashArrowUp","faTrashRestore","faArrowDownUpLock","faLinesLeaning","faRulerCombined","faCopyright","faEquals","faBlender","faTeeth","faShekelSign","faIls","faShekel","faSheqel","faSheqelSign","faMap","faRocket","faPhotoFilm","faPhotoVideo","faFolderMinus","faStore","faArrowTrendUp","faPlugCircleMinus","faSignHanging","faSign","faBezierCurve","faBellSlash","faTablet","faTabletAndroid","faSchoolFlag","faFill","faAngleUp","faDrumstickBite","faHollyBerry","faChevronLeft","faBacteria","faHandLizard","faDisease","faBriefcaseMedical","faGenderless","faChevronRight","faRetweet","faCarRear","faCarAlt","faPumpSoap","faVideoSlash","faBatteryQuarter","faBattery2","faRadio","faBabyCarriage","faCarriageBaby","faTrafficLight","faThermometer","faVrCardboard","faHandMiddleFinger","faPercent","faPercentage","faTruckMoving","faGlassWaterDroplet","faDisplay","faFaceSmile","faSmile","faThumbtack","faThumbTack","faTrophy","faPersonPraying","faPray","faHammer","faHandPeace","faRotate","faSyncAlt","faSpinner","faRobot","faPeace","faGears","faCogs","faWarehouse","faArrowUpRightDots","faSplotch","faFaceGrinHearts","faGrinHearts","faDiceFour","faSimCard","faTransgender","faTransgenderAlt","faMercury","faArrowTurnDown","faLevelDown","faPersonFallingBurst","faAward","faTicketSimple","faTicketAlt","faBuilding","faAnglesLeft","faAngleDoubleLeft","faQrcode","faClockRotateLeft","faHistory","faFaceGrinBeamSweat","faGrinBeamSweat","faFileExport","faArrowRightFromFile","faShield","faShieldBlank","faArrowUpShortWide","faSortAmountUpAlt","faHouseMedical","faGolfBallTee","faGolfBall","faCircleChevronLeft","faChevronCircleLeft","faHouseChimneyWindow","faPenNib","faTentArrowTurnLeft","faTents","faWandMagic","faMagic","faDog","faCarrot","faMoon","faWineGlassEmpty","faWineGlassAlt","faCheese","faYinYang","faMusic","faCodeCommit","faTemperatureLow","faPersonBiking","faBiking","faBroom","faShieldHeart","faGopuram","faEarthOceania","faGlobeOceania","faSquareXmark","faTimesSquare","faXmarkSquare","faHashtag","faUpRightAndDownLeftFromCenter","faExpandAlt","faOilCan","faT","faHippo","faChartColumn","faInfinity","faVialCircleCheck","faPersonArrowDownToLine","faVoicemail","faFan","faPersonWalkingLuggage","faUpDown","faArrowsAltV","faCloudMoonRain","faCalendar","faTrailer","faBahai","faHaykal","faSdCard","faDragon","faShoePrints","faCirclePlus","faPlusCircle","faFaceGrinTongueWink","faGrinTongueWink","faHandHolding","faPlugCircleExclamation","faLinkSlash","faChainBroken","faChainSlash","faUnlink","faClone","faPersonWalkingArrowLoopLeft","faArrowUpZA","faSortAlphaUpAlt","faFireFlameCurved","faFireAlt","faTornado","faFileCirclePlus","faBookQuran","faQuran","faAnchor","faBorderAll","faFaceAngry","faAngry","faCookieBite","faArrowTrendDown","faRss","faFeed","faDrawPolygon","faScaleBalanced","faBalanceScale","faGaugeSimpleHigh","faTachometer","faTachometerFast","faShower","faDesktop","faDesktopAlt","faM","faTableList","faThList","faCommentSms","faSms","faBook","faUserPlus","faCheck","faBatteryThreeQuarters","faBattery4","faHouseCircleCheck","faAngleLeft","faDiagramSuccessor","faTruckArrowRight","faArrowsSplitUpAndLeft","faHandFist","faFistRaised","faCloudMoon","faBriefcase","faPersonFalling","faImagePortrait","faPortrait","faUserTag","faRug","faEarthEurope","faGlobeEurope","faCartFlatbedSuitcase","faLuggageCart","faRectangleXmark","faRectangleTimes","faTimesRectangle","faWindowClose","faBahtSign","faBookOpen","faBookJournalWhills","faJournalWhills","faHandcuffs","faTriangleExclamation","faExclamationTriangle","faWarning","faDatabase","faShare","faArrowTurnRight","faMailForward","faBottleDroplet","faMaskFace","faHillRockslide","faRightLeft","faExchangeAlt","faPaperPlane","faRoadCircleExclamation","faDungeon","faAlignRight","faMoneyBill1Wave","faMoneyBillWaveAlt","faLifeRing","faHands","faSignLanguage","faSigning","faCalendarDay","faWaterLadder","faLadderWater","faSwimmingPool","faArrowsUpDown","faArrowsV","faFaceGrimace","faGrimace","faWheelchairMove","faWheelchairAlt","faTurnDown","faLevelDownAlt","faPersonWalkingArrowRight","faSquareEnvelope","faEnvelopeSquare","faDice","faBowlingBall","faBrain","faBandage","faBandAid","faCalendarMinus","faCircleXmark","faTimesCircle","faXmarkCircle","faGifts","faHotel","faEarthAsia","faGlobeAsia","faIdCardClip","faIdCardAlt","faMagnifyingGlassPlus","faSearchPlus","faThumbsUp","faUserClock","faHandDots","faAllergies","faFileInvoice","faWindowMinimize","faMugSaucer","faCoffee","faBrush","faMask","faMagnifyingGlassMinus","faSearchMinus","faRulerVertical","faUserLarge","faUserAlt","faTrainTram","faUserNurse","faSyringe","faCloudSun","faStopwatch20","faSquareFull","faMagnet","faJar","faNoteSticky","faStickyNote","faBugSlash","faArrowUpFromWaterPump","faBone","faUserInjured","faFaceSadTear","faSadTear","faPlane","faTentArrowsDown","faExclamation","faArrowsSpin","faPrint","faTurkishLiraSign","faTry","faTurkishLira","faDollarSign","faDollar","faUsd","faX","faMagnifyingGlassDollar","faSearchDollar","faUsersGear","faUsersCog","faPersonMilitaryPointing","faBuildingColumns","faBank","faInstitution","faMuseum","faUniversity","faUmbrella","faTrowel","faD","faStapler","faMasksTheater","faTheaterMasks","faKipSign","faHandPointLeft","faHandshakeSimple","faHandshakeAlt","faJetFighter","faFighterJet","faSquareShareNodes","faShareAltSquare","faBarcode","faPlusMinus","faVideo","faVideoCamera","faGraduationCap","faMortarBoard","faHandHoldingMedical","faPersonCircleCheck","faTurnUp","faLevelUpAlt","faMonero","faHooli","faYelp","faCcVisa","faLastfm","faShopware","faCreativeCommonsNc","faAws","faRedhat","faYoast","faCloudflare","faUps","faWpexplorer","faDyalog","faBity","faStackpath","faBuysellads","faFirstOrder","faModx","faGuilded","faVnv","faSquareJs","faJsSquare","faMicrosoft","faQq","faOrcid","faJava","faInvision","faCreativeCommonsPdAlt","faCentercode","faGlideG","faDrupal","faHireAHelper","faCreativeCommonsBy","faUnity","faWhmcs","faRocketchat","faVk","faUntappd","faMailchimp","faCss3Alt","faSquareReddit","faRedditSquare","faVimeoV","faContao","faSquareFontAwesome","faDeskpro","faSistrix","faSquareInstagram","faInstagramSquare","faBattleNet","faTheRedYeti","faSquareHackerNews","faHackerNewsSquare","faEdge","faNapster","faSquareSnapchat","faSnapchatSquare","faGooglePlusG","faArtstation","faMarkdown","faSourcetree","faGooglePlus","faDiaspora","faFoursquare","faStackOverflow","faGithubAlt","faPhoenixSquadron","faPagelines","faAlgolia","faRedRiver","faCreativeCommonsSa","faSafari","faGoogle","faSquareFontAwesomeStroke","faFontAwesomeAlt","faAtlassian","faLinkedinIn","faDigitalOcean","faNimblr","faChromecast","faEvernote","faHackerNews","faCreativeCommonsSampling","faAdversal","faCreativeCommons","faWatchmanMonitoring","faFonticons","faWeixin","faShirtsinbulk","faCodepen","faGitAlt","faLyft","faRev","faWindows","faWizardsOfTheCoast","faSquareViadeo","faViadeoSquare","faMeetup","faCentos","faAdn","faCloudsmith","faPiedPiperAlt","faSquareDribbble","faDribbbleSquare","faCodiepie","faNode","faMix","faSteam","faCcApplePay","faScribd","faOpenid","faInstalod","faExpeditedssl","faSellcast","faSquareTwitter","faTwitterSquare","faRProject","faDelicious","faFreebsd","faVuejs","faAccusoft","faIoxhost","faFonticonsFi","faAppStore","faCcMastercard","faItunesNote","faGolang","faKickstarter","faGrav","faWeibo","faUncharted","faFirstdraft","faSquareYoutube","faYoutubeSquare","faWikipediaW","faWpressr","faRendact","faAngellist","faGalacticRepublic","faNfcDirectional","faSkype","faJoget","faFedora","faStripeS","faMeta","faLaravel","faHotjar","faBluetoothB","faStickerMule","faCreativeCommonsZero","faHips","faBehance","faReddit","faDiscord","faChrome","faAppStoreIos","faCcDiscover","faWpbeginner","faConfluence","faMdb","faDochub","faAccessibleIcon","faEbay","faAmazon","faUnsplash","faYarn","faSquareSteam","faSteamSquare","fa500px","faSquareVimeo","faVimeoSquare","faAsymmetrik","faGratipay","faApple","faHive","faGitkraken","faKeybase","faApplePay","faPadlet","faAmazonPay","faSquareGithub","faGithubSquare","faStumbleupon","faFedex","faPhoenixFramework","faShopify","faNeos","faHackerrank","faResearchgate","faSwift","faAngular","faSpeakap","faAngrycreative","faYCombinator","faEmpire","faEnvira","faSquareGitlab","faGitlabSquare","faStudiovinari","faPiedPiper","faWordpress","faProductHunt","faFirefox","faLinode","faGoodreads","faSquareOdnoklassniki","faOdnoklassnikiSquare","faJsfiddle","faSith","faThemeisle","faPage4","faHashnode","faReact","faCcPaypal","faSquarespace","faCcStripe","faCreativeCommonsShare","faBitcoin","faKeycdn","faOpera","faItchIo","faUmbraco","faGalacticSenate","faUbuntu","faDraft2digital","faStripe","faHouzz","faGg","faDhl","faSquarePinterest","faPinterestSquare","faXing","faBlackberry","faCreativeCommonsPd","faPlaystation","faQuinscape","faLess","faBloggerB","faOpencart","faVine","faPaypal","faGitlab","faTypo3","faRedditAlien","faYahoo","faDailymotion","faAffiliatetheme","faPiedPiperPp","faBootstrap","faOdnoklassniki","faNfcSymbol","faEthereum","faSpeakerDeck","faCreativeCommonsNcEu","faPatreon","faAvianex","faEllo","faGofore","faBimobject","faFacebookF","faSquareGooglePlus","faGooglePlusSquare","faMandalorian","faFirstOrderAlt","faOsi","faGoogleWallet","faDAndDBeyond","faPeriscope","faFulcrum","faCloudscale","faForumbee","faMizuni","faSchlix","faSquareXing","faXingSquare","faBandcamp","faWpforms","faCloudversify","faUsps","faMegaport","faMagento","faSpotify","faOptinMonster","faFly","faAviato","faItunes","faCuttlefish","faBlogger","faFlickr","faViber","faSoundcloud","faDigg","faTencentWeibo","faSymfony","faMaxcdn","faEtsy","faFacebookMessenger","faAudible","faThinkPeaks","faBilibili","faErlang","faCottonBureau","faDashcube","fa42Group","faInnosoft","faStackExchange","faElementor","faSquarePiedPiper","faPiedPiperSquare","faCreativeCommonsNd","faPalfed","faSuperpowers","faResolving","faXbox","faSearchengin","faTiktok","faSquareFacebook","faFacebookSquare","faRenren","faLinux","faGlide","faLinkedin","faHubspot","faDeploydog","faTwitch","faRavelry","faMixer","faSquareLastfm","faLastfmSquare","faVimeo","faMendeley","faUniregistry","faFigma","faCreativeCommonsRemix","faCcAmazonPay","faDropbox","faInstagram","faCmplid","faFacebook","faGripfire","faJediOrder","faUikit","faFortAwesomeAlt","faPhabricator","faUssunnah","faEarlybirds","faTradeFederation","faAutoprefixer","faWhatsapp","faSlideshare","faGooglePlay","faViadeo","faLine","faGoogleDrive","faServicestack","faSimplybuilt","faBitbucket","faImdb","faDeezer","faRaspberryPi","faJira","faDocker","faScreenpal","faBluetooth","faGitter","faDAndD","faMicroblog","faCcDinersClub","faGgCircle","faPiedPiperHat","faKickstarterK","faYandex","faReadme","faHtml5","faSellsy","faSass","faWirsindhandwerk","faWsh","faBuromobelexperte","faSalesforce","faOctopusDeploy","faMedapps","faNs8","faPinterestP","faApper","faFortAwesome","faWaze","faCcJcb","faSnapchat","faSnapchatGhost","faFantasyFlightGames","faRust","faWix","faSquareBehance","faBehanceSquare","faSupple","faRebel","faCss3","faStaylinked","faKaggle","faSpaceAwesome","faDeviantart","faCpanel","faGoodreadsG","faSquareGit","faGitSquare","faSquareTumblr","faTumblrSquare","faTrello","faCreativeCommonsNcJp","faGetPocket","faPerbyte","faGrunt","faWeebly","faConnectdevelop","faLeanpub","faBlackTie","faThemeco","faPython","faAndroid","faBots","faFreeCodeCamp","faHornbill","faJs","faIdeal","faGit","faDev","faSketch","faYandexInternational","faCcAmex","faUber","faGithub","faPhp","faAlipay","faYoutube","faSkyatlas","faFirefoxBrowser","faReplyd","faSuse","faJenkins","faTwitter","faRockrms","faPinterest","faBuffer","faNpm","faYammer","faBtc","faDribbble","faStumbleuponCircle","faInternetExplorer","faTelegram","faTelegramPlane","faOldRepublic","faSquareWhatsapp","faWhatsappSquare","faNodeJs","faEdgeLegacy","faSlack","faSlackHash","faMedrt","faUsb","faTumblr","faVaadin","faQuora","faReacteurope","faMedium","faMediumM","faAmilia","faMixcloud","faFlipboard","faViacoin","faCriticalRole","faSitrox","faDiscourse","faJoomla","faMastodon","faAirbnb","faWolfPackBattalion","faBuyNLarge","faGulp","faCreativeCommonsSamplingPlus","faStrava","faEmber","faCanadianMapleLeaf","faTeamspeak","faPushed","faWordpressSimple","faNutritionix","faWodu","faGooglePay","faIntercom","faZhihu","faKorvue","faPix","faSteamSymbol","isLocalhost","waitWindowLoad","swUrl","registrationOptions","checkValidServiceWorker","registration","registerValidSW","installingWorker","unregister","fas","far","fab","App","maska","HirSelect2","HirToast","_vm","_info"],"sources":["../../../hircasa-srp-webapp/vite/modulepreload-polyfill","../../../hircasa-srp-webapp/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../hircasa-srp-webapp/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../hircasa-srp-webapp/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../hircasa-srp-webapp/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../hircasa-srp-webapp/node_modules/vue-router/dist/vue-router.mjs","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/assets/LogoColor2.png","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/bind.js","../../../hircasa-srp-webapp/node_modules/axios/lib/utils.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/AxiosError.js","../../../hircasa-srp-webapp/node_modules/form-data/lib/browser.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/toFormData.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/buildURL.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/InterceptorManager.js","../../../hircasa-srp-webapp/node_modules/axios/lib/defaults/transitional.js","../../../hircasa-srp-webapp/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../../hircasa-srp-webapp/node_modules/axios/lib/platform/browser/classes/FormData.js","../../../hircasa-srp-webapp/node_modules/axios/lib/platform/browser/index.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/formDataToJSON.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/settle.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/cookies.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/combineURLs.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/buildFullPath.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../../hircasa-srp-webapp/node_modules/axios/lib/cancel/CanceledError.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/parseProtocol.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/parseHeaders.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/AxiosHeaders.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/speedometer.js","../../../hircasa-srp-webapp/node_modules/axios/lib/adapters/xhr.js","../../../hircasa-srp-webapp/node_modules/axios/lib/adapters/index.js","../../../hircasa-srp-webapp/node_modules/axios/lib/defaults/index.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/transformData.js","../../../hircasa-srp-webapp/node_modules/axios/lib/cancel/isCancel.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/dispatchRequest.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/mergeConfig.js","../../../hircasa-srp-webapp/node_modules/axios/lib/env/data.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/validator.js","../../../hircasa-srp-webapp/node_modules/axios/lib/core/Axios.js","../../../hircasa-srp-webapp/node_modules/axios/lib/cancel/CancelToken.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/spread.js","../../../hircasa-srp-webapp/node_modules/axios/lib/helpers/isAxiosError.js","../../../hircasa-srp-webapp/node_modules/axios/lib/axios.js","../../../hircasa-srp-webapp/src/servicios/api.ts","../../../hircasa-srp-webapp/node_modules/vue-demi/lib/index.mjs","../../../hircasa-srp-webapp/node_modules/pinia/dist/pinia.mjs","../../../hircasa-srp-webapp/src/store/storeAxios.ts","../../../hircasa-srp-webapp/src/servicios/apiCliente.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/store.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/CCHeader.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/assets/logoblanco.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/assets/certificaciones.png","../../../hircasa-srp-webapp/plugin-vue:export-helper","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/CCFooter.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/helpers/chat.js","../../../hircasa-srp-webapp/src/utilidades.ts","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/enums.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/math.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/within.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/debounce.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/createPopper.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/popper-lite.js","../../../hircasa-srp-webapp/node_modules/@popperjs/core/lib/popper.js","../../../hircasa-srp-webapp/node_modules/bootstrap/dist/js/bootstrap.esm.js","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/App.vue","../../../hircasa-srp-webapp/node_modules/lodash/lodash.js","../../../hircasa-srp-webapp/src/interfaces.ts","../../../hircasa-srp-webapp/node_modules/sweetalert2/dist/sweetalert2.all.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericEnum.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericHelper.js","../../../hircasa-srp-webapp/src/lib/autonumeric/maths/Evaluator.js","../../../hircasa-srp-webapp/src/lib/autonumeric/maths/ASTNode.js","../../../hircasa-srp-webapp/src/lib/autonumeric/maths/Token.js","../../../hircasa-srp-webapp/src/lib/autonumeric/maths/Lexer.js","../../../hircasa-srp-webapp/src/lib/autonumeric/maths/Parser.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumeric.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericEvents.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericOptions.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericDefaultSettings.js","../../../hircasa-srp-webapp/src/lib/autonumeric/AutoNumericPredefinedOptions.js","../../../hircasa-srp-webapp/src/components/HirAutonumeric.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/InformacionLaboral/CCGeneral.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/InformacionLaboral/CCNomina.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/InformacionLaboral.vue","../../../hircasa-srp-webapp/src/composables/filtros.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/composables/EstudioSocioeconomico.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/composables/ComprobacionIngresos.ts","../../../hircasa-srp-webapp/src/store/index.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/ObligadoSolidario.vue","../../../hircasa-srp-webapp/node_modules/jquery/dist/jquery.js","../../../hircasa-srp-webapp/node_modules/luxon/src/errors.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/formats.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/util.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/english.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/formatter.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/invalid.js","../../../hircasa-srp-webapp/node_modules/luxon/src/zone.js","../../../hircasa-srp-webapp/node_modules/luxon/src/zones/systemZone.js","../../../hircasa-srp-webapp/node_modules/luxon/src/zones/IANAZone.js","../../../hircasa-srp-webapp/node_modules/luxon/src/zones/fixedOffsetZone.js","../../../hircasa-srp-webapp/node_modules/luxon/src/zones/invalidZone.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/zoneUtil.js","../../../hircasa-srp-webapp/node_modules/luxon/src/settings.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/locale.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/regexParser.js","../../../hircasa-srp-webapp/node_modules/luxon/src/duration.js","../../../hircasa-srp-webapp/node_modules/luxon/src/interval.js","../../../hircasa-srp-webapp/node_modules/luxon/src/info.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/diff.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/digits.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/tokenParser.js","../../../hircasa-srp-webapp/node_modules/luxon/src/impl/conversions.js","../../../hircasa-srp-webapp/node_modules/luxon/src/datetime.js","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/spinner_02.gif","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCPerfil.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/bg.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCLogin.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/CCTimeline.vue","../../../hircasa-srp-webapp/src/mixins/filtros.ts","../../../hircasa-srp-webapp/src/mixins/componentId.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/SeguroVida.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CrearUsuario.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCRecuperacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/RecuperacionCorreo.vue","../../../../../../../cliente/cliente/img/home-banner-2024.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_domiciliar.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_facturacion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_aclaraciones.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_main_pc.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/icon_mifinanciamiento.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/icon_seguros.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/icon_titulacion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/i_miperfil.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/icon_adjudicaciones.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Menu/icon_materiales_apoyo.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/PagosApp_PORTAL-CLIENTE.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCHome.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCFinanciamiento.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/publicidadmes.svg","../../../hircasa-srp-webapp/node_modules/datatables.net/js/jquery.dataTables.js","../../../hircasa-srp-webapp/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.js","../../../hircasa-srp-webapp/src/datatables.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCAdjudicaciones.vue","../../../hircasa-srp-webapp/src/components/EasyCircularProgress.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Interrogacion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/ListaDocumentos.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCEscrituracion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MaterialesApoyo.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/AppOffline.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_recicla.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/ProgramaReclica.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_metodos_01.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_metodos_02.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_metodos_03.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/e_adjudicacion_01.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/e_adjudicacion_02.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/e_adjudicacion_03.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/e_adjudicacion_04.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/e_adjudicacion_05.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_calendario.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_liquidacion_01.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_liquidacion_02.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_liquidacion_03.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_liquidacion_04.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_cotizatramite.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MALiquidacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_domiciliar.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_comprar.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_construir.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_remodelar.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MATitulacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_incendio_edificio.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_quepuedohacer.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/MaterialApoyo/Bienvenida/i_casa_departamento.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/MaterialApoyo/Bienvenida/i_negocio_local_comercial.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/MaterialApoyo/Bienvenida/i_terreno.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/MaterialApoyo/Bienvenida/i_construir_remodelar.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/MaterialApoyo/Bienvenida/i_compra_preventa.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/mapa.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_domiciliacion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_aumento.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_beneficiarios.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_fusion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_disminucion.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/SliderCarousel.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MALiberacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_preventa.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MAPreventas.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pago_01.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pago_02.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pago_03.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pagopuntual.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pagoanticipado.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_pagomoroso.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/img_edo_cuenta.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/leer_edo_cuenta.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/consultar_edo_cuenta.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/recicla.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/MAPagos.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_hogar_cobertura.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/i_oficinas_cobertura.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/SeguroDanios.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/Siniestros/SeguroVida.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/Siniestros/SeguroInvalidez.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/Siniestros/SeguroDesempleo.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/Siniestros/SeguroDanios.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCSiniestro.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/GeneradorPin.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCFacturacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCDomiciliacion.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/ReporteSeguroVida.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/CCGuia.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/casa_1.svg","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/imueble.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/vendedor.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/escritura.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/pago.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/contacto.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/Venta/encuenta.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/assets/logo_enviar.png","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/storeTitular.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/storeDocumentos.ts","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/EstudioSocioeconomico2.vue","../../../hircasa-srp-webapp/vite/preload-helper","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/DatosGenerales.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/Ingresos.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/helpers/simboloPesos.js","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/helpers/onlyNumbers.js","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/Gastos.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/helpers/onlyAlfa.js","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/Vendedor.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/Patrimonio.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/ObservacionesGenerales.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/UsoFinanciamiento.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/layout/FormularioLayout.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/components/ChecklistCollapse.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/views/EstudioSocioeconomico/ChecklistDocumentos.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/Areas/Cliente/router/index.ts","../../../hircasa-srp-webapp/src/views/RouterViewGenerico.vue","../../../hircasa-srp-webapp/src/Aplicaciones/Cliente/router/index.ts","../../../hircasa-srp-webapp/src/router/index.ts","../../../hircasa-srp-webapp/src/App.vue","../../../hircasa-srp-webapp/node_modules/select2/dist/js/select2.js","../../../hircasa-srp-webapp/src/components/HirSelect2.vue","../../../hircasa-srp-webapp/src/components/HirToast.vue","../../../hircasa-srp-webapp/node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../../../hircasa-srp-webapp/node_modules/@fortawesome/free-solid-svg-icons/index.mjs","../../../hircasa-srp-webapp/node_modules/@fortawesome/free-regular-svg-icons/index.mjs","../../../hircasa-srp-webapp/node_modules/@fortawesome/free-brands-svg-icons/index.mjs","../../../hircasa-srp-webapp/node_modules/register-service-worker/index.js","../../../hircasa-srp-webapp/src/registerServiceWorker.ts","../../../hircasa-srp-webapp/node_modules/maska/dist/maska.esm.js","../../../hircasa-srp-webapp/src/main.ts"],"sourcesContent":["const p = function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * CSS properties that accept plain numbers\n */\nconst isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` +\n `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` +\n `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` +\n `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` +\n `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` +\n `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` +\n // SVG\n `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` +\n `stroke-miterlimit,stroke-opacity,stroke-width`);\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:(.+)/;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.split(listDelimiterRE).forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) ||\n (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '"';\n break;\n case 38: // &\n escaped = '&';\n break;\n case 39: // '\n escaped = ''';\n break;\n case 60: // <\n escaped = '<';\n break;\n case 62: // >\n escaped = '>';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isNoUnitNumericStyleProp, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { extend, isArray, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newValue) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n // instance is the inner component of an async custom element\n // invoke to reset styles\n if (instance.parent.type.__asyncLoader &&\n instance.parent.ceReload) {\n instance.parent.ceReload(newComp.styles);\n }\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => a.trim());\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n return NOOP;\n }\n let oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n return () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n instance.update();\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, { vnode: { ref, props, children, shapeFlag }, parent }) {\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n let shapeFlag = vnode.shapeFlag;\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n shapeFlag -= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n }\n if (shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n shapeFlag -= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n }\n vnode.shapeFlag = shapeFlag;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n return createVNode('slot', name === 'default' ? null : { name }, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // prioritize <script setup> bindings during dev.\n // this allows even properties that start with _ or $ to be used - so that\n // it aligns with the production behavior where the render fn is inlined and\n // indeed has access to all declared variables.\n if ((process.env.NODE_ENV !== 'production') &&\n setupState !== EMPTY_OBJ &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n return setupState[key];\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate prop \"${key}\". Props are readonly.`, instance);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`, instance);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n (setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : opt);\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.41\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","import { camelize, warn, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, getCurrentInstance, watchPostEffect, onMounted, onUnmounted, Fragment, Static, h, BaseTransition, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, createRenderer, isRuntimeOnly, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { isString, isArray, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, toNumber, camelize as camelize$1, extend, EMPTY_OBJ, isObject, invokeArrayFns, looseIndexOf, isSet, looseEqual, isHTMLTag, isSVGTag } from '@vue/shared';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\nconst doc = (typeof document !== 'undefined' ? document : null);\nconst templateContainer = doc && /*#__PURE__*/ doc.createElement('template');\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: child => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, isSVG, is, props) => {\n const el = isSVG\n ? doc.createElementNS(svgNS, tag)\n : doc.createElement(tag, is ? { is } : undefined);\n if (tag === 'select' && props && props.multiple != null) {\n el.setAttribute('multiple', props.multiple);\n }\n return el;\n },\n createText: text => doc.createTextNode(text),\n createComment: text => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: node => node.parentNode,\n nextSibling: node => node.nextSibling,\n querySelector: selector => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, '');\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, isSVG, start, end) {\n // <parent> before | first ... last | anchor </parent>\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n // #5308 can only take cached path if:\n // - has a single root node\n // - nextSibling info is still available\n if (start && (start === end || start.nextSibling)) {\n // cached\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling))\n break;\n }\n }\n else {\n // fresh insert\n templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\n const template = templateContainer.content;\n if (isSVG) {\n // remove outer svg wrapper\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\n// compiler should normalize class + :class bindings on the same element\n// into a single binding ['staticClass', dynamic]\nfunction patchClass(el, value, isSVG) {\n // directly setting className should be faster than setAttribute in theory\n // if this is an element during a transition, take the temporary transition\n // classes into account.\n const transitionClasses = el._vtc;\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');\n }\n if (value == null) {\n el.removeAttribute('class');\n }\n else if (isSVG) {\n el.setAttribute('class', value);\n }\n else {\n el.className = value;\n }\n}\n\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n if (next && !isCssString) {\n for (const key in next) {\n setStyle(style, key, next[key]);\n }\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, '');\n }\n }\n }\n }\n else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next) {\n style.cssText = next;\n }\n }\n else if (prev) {\n el.removeAttribute('style');\n }\n // indicates that the `display` of the element is controlled by `v-show`,\n // so we always keep the current `display` value regardless of the `style`\n // value, thus handing over control to `v-show`.\n if ('_vod' in el) {\n style.display = currentDisplay;\n }\n }\n}\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach(v => setStyle(style, name, v));\n }\n else {\n if (val == null)\n val = '';\n if (name.startsWith('--')) {\n // custom property definition\n style.setProperty(name, val);\n }\n else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n // !important\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');\n }\n else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = ['Webkit', 'Moz', 'ms'];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== 'filter' && name in style) {\n return (prefixCache[rawName] = name);\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return (prefixCache[rawName] = prefixed);\n }\n }\n return rawName;\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\nfunction patchAttr(el, key, value, isSVG, instance) {\n if (isSVG && key.startsWith('xlink:')) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n }\n else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n }\n else {\n // note we are only checking boolean attributes that don't have a\n // corresponding dom prop of the same name here.\n const isBoolean = isSpecialBooleanAttr(key);\n if (value == null || (isBoolean && !includeBooleanAttr(value))) {\n el.removeAttribute(key);\n }\n else {\n el.setAttribute(key, isBoolean ? '' : value);\n }\n }\n}\n\n// __UNSAFE__\n// functions. The user is responsible for using them with only trusted content.\nfunction patchDOMProp(el, key, value, \n// the following args are passed only due to potential innerHTML/textContent\n// overriding existing VNodes, in which case the old tree must be properly\n// unmounted.\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\n if (key === 'innerHTML' || key === 'textContent') {\n if (prevChildren) {\n unmountChildren(prevChildren, parentComponent, parentSuspense);\n }\n el[key] = value == null ? '' : value;\n return;\n }\n if (key === 'value' &&\n el.tagName !== 'PROGRESS' &&\n // custom elements may use _value internally\n !el.tagName.includes('-')) {\n // store value as _value as well since\n // non-string values will be stringified.\n el._value = value;\n const newValue = value == null ? '' : value;\n if (el.value !== newValue ||\n // #4956: always set for OPTION elements because its value falls back to\n // textContent if no value attribute is present. And setting .value for\n // OPTION has no side effect\n el.tagName === 'OPTION') {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n return;\n }\n let needRemove = false;\n if (value === '' || value == null) {\n const type = typeof el[key];\n if (type === 'boolean') {\n // e.g. <select multiple> compiles to { multiple: '' }\n value = includeBooleanAttr(value);\n }\n else if (value == null && type === 'string') {\n // e.g. <div :id=\"null\">\n value = '';\n needRemove = true;\n }\n else if (type === 'number') {\n // e.g. <img :width=\"null\">\n value = 0;\n needRemove = true;\n }\n }\n // some properties perform value validation and throw,\n // some properties has getter, no setter, will error in 'use strict'\n // eg. <select :type=\"null\"></select> <select :willValidate=\"null\"></select>\n try {\n el[key] = value;\n }\n catch (e) {\n // do not warn if value is auto-coerced from nullish values\n if ((process.env.NODE_ENV !== 'production') && !needRemove) {\n warn(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\n `value ${value} is invalid.`, e);\n }\n }\n needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n // vei = vue event invokers\n const invokers = el._vei || (el._vei = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n // patch\n existingInvoker.value = nextValue;\n }\n else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n // add\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\n addEventListener(el, name, invoker, options);\n }\n else if (existingInvoker) {\n // remove\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = undefined;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\n// To avoid the overhead of repeatedly calling Date.now(), we cache\n// and use the same timestamp for all event listeners attached in the same tick.\nlet cachedNow = 0;\nconst p = /*#__PURE__*/ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now()));\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n // async edge case vuejs/vue#6566\n // inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // this no longer happens for templates in Vue 3, but could still be\n // theoretically possible for hand-written render functions.\n // the solution: we save the timestamp when a handler is attached,\n // and also attach the timestamp to any event that was handled by vue\n // for the first time (to avoid inconsistent event timestamp implementations\n // or events fired from iframes, e.g. #2513)\n // The handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (!e._vts) {\n e._vts = Date.now();\n }\n else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(fn => (e) => !e._stopped && fn && fn(e));\n }\n else {\n return value;\n }\n}\n\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n if (key === 'class') {\n patchClass(el, nextValue, isSVG);\n }\n else if (key === 'style') {\n patchStyle(el, prevValue, nextValue);\n }\n else if (isOn(key)) {\n // ignore v-model listeners\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n }\n else if (key[0] === '.'\n ? ((key = key.slice(1)), true)\n : key[0] === '^'\n ? ((key = key.slice(1)), false)\n : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n }\n else {\n // special case for <input v-model type=\"checkbox\"> with\n // :true-value & :false-value\n // store value as dom properties since non-string values will be\n // stringified.\n if (key === 'true-value') {\n el._trueValue = nextValue;\n }\n else if (key === 'false-value') {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n // most keys must be set as attribute on svg elements to work\n // ...except innerHTML & textContent\n if (key === 'innerHTML' || key === 'textContent') {\n return true;\n }\n // or native onclick with function values\n if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n // these are enumerated attrs, however their corresponding DOM properties\n // are actually booleans - this leads to setting it with a string \"false\"\n // value leading it to be coerced to `true`, so we need to always treat\n // them as attributes.\n // Note that `contentEditable` doesn't have this problem: its DOM\n // property is also enumerated string values.\n if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {\n return false;\n }\n // #1787, #2840 form property on form elements is readonly and must be set as\n // attribute.\n if (key === 'form') {\n return false;\n }\n // #1526 <input list> must be set as attribute\n if (key === 'list' && el.tagName === 'INPUT') {\n return false;\n }\n // #2766 <textarea type> must be set as attribute\n if (key === 'type' && el.tagName === 'TEXTAREA') {\n return false;\n }\n // native onclick with string value, must be set as attribute\n if (nativeOnRE.test(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nfunction defineCustomElement(options, hydrate) {\n const Comp = defineComponent(options);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst defineSSRCustomElement = ((options) => {\n // @ts-ignore\n return defineCustomElement(options, hydrate);\n});\nconst BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {\n});\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate) {\n super();\n this._def = _def;\n this._props = _props;\n /**\n * @internal\n */\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n if (this.shadowRoot && hydrate) {\n hydrate(this._createVNode(), this.shadowRoot);\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && this.shadowRoot) {\n warn(`Custom element has pre-rendered declarative shadow root but is not ` +\n `defined as hydratable. Use \\`defineSSRCustomElement\\`.`);\n }\n this.attachShadow({ mode: 'open' });\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n this._resolveDef();\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n if (this._resolved) {\n return;\n }\n this._resolved = true;\n // set initial attrs\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n // watch future attr changes\n new MutationObserver(mutations => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n }).observe(this, { attributes: true });\n const resolve = (def) => {\n const { props, styles } = def;\n const hasOptions = !isArray(props);\n const rawKeys = props ? (hasOptions ? Object.keys(props) : props) : [];\n // cast Number-type props set before resolve\n let numberProps;\n if (hasOptions) {\n for (const key in this._props) {\n const opt = props[key];\n if (opt === Number || (opt && opt.type === Number)) {\n this._props[key] = toNumber(this._props[key]);\n (numberProps || (numberProps = Object.create(null)))[key] = true;\n }\n }\n }\n this._numberProps = numberProps;\n // check if there are props set pre-upgrade or connect\n for (const key of Object.keys(this)) {\n if (key[0] !== '_') {\n this._setProp(key, this[key], true, false);\n }\n }\n // defining getter/setters on prototype\n for (const key of rawKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val);\n }\n });\n }\n // apply CSS\n this._applyStyles(styles);\n // initial render\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then(resolve);\n }\n else {\n resolve(this._def);\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n if (this._numberProps && this._numberProps[key]) {\n value = toNumber(value);\n }\n this._setProp(camelize$1(key), value, false);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n if (val !== this._props[key]) {\n this._props[key] = val;\n if (shouldUpdate && this._instance) {\n this._update();\n }\n // reflect\n if (shouldReflect) {\n if (val === true) {\n this.setAttribute(hyphenate(key), '');\n }\n else if (typeof val === 'string' || typeof val === 'number') {\n this.setAttribute(hyphenate(key), val + '');\n }\n else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n }\n }\n }\n _update() {\n render(this._createVNode(), this.shadowRoot);\n }\n _createVNode() {\n const vnode = createVNode(this._def, extend({}, this._props));\n if (!this._instance) {\n vnode.ce = instance => {\n this._instance = instance;\n instance.isCE = true;\n // HMR\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ceReload = newStyles => {\n // always reset styles\n if (this._styles) {\n this._styles.forEach(s => this.shadowRoot.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n // if this is an async component, ceReload is called from the inner\n // component so no need to reload the async wrapper\n if (!this._def.__asyncLoader) {\n // reload\n this._instance = null;\n this._update();\n }\n };\n }\n // intercept emit\n instance.emit = (event, ...args) => {\n this.dispatchEvent(new CustomEvent(event, {\n detail: args\n }));\n };\n // locate nearest Vue custom element parent for provide/inject\n let parent = this;\n while ((parent =\n parent && (parent.parentNode || parent.host))) {\n if (parent instanceof VueElement) {\n instance.parent = parent._instance;\n break;\n }\n }\n };\n }\n return vnode;\n }\n _applyStyles(styles) {\n if (styles) {\n styles.forEach(css => {\n const s = document.createElement('style');\n s.textContent = css;\n this.shadowRoot.appendChild(s);\n // record for HMR\n if ((process.env.NODE_ENV !== 'production')) {\n (this._styles || (this._styles = [])).push(s);\n }\n });\n }\n }\n}\n\nfunction useCssModule(name = '$style') {\n /* istanbul ignore else */\n {\n const instance = getCurrentInstance();\n if (!instance) {\n (process.env.NODE_ENV !== 'production') && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n (process.env.NODE_ENV !== 'production') && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n /* istanbul ignore next */\n if (!instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const setVars = () => setVarsOnVNode(instance.subTree, getter(instance.proxy));\n watchPostEffect(setVars);\n onMounted(() => {\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n // drill down HOCs until it's a non-component vnode\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n }\n else if (vnode.type === Fragment) {\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\n }\n else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor)\n break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n }\n }\n}\n\nconst TRANSITION = 'transition';\nconst ANIMATION = 'animation';\n// DOM Transition is a higher-order-component based on the platform-agnostic\n// base Transition component, with DOM-specific logic.\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = 'Transition';\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = (Transition.props =\n /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));\n/**\n * #3227 Incoming hooks may be merged into arrays when wrapping Transition\n * with custom HOCs.\n */\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach(h => h(...args));\n }\n else if (hook) {\n hook(...args);\n }\n};\n/**\n * Check if a hook expects a callback (2nd arg), which means the user\n * intends to explicitly control the end of the transition.\n */\nconst hasExplicitCallback = (hook) => {\n return hook\n ? isArray(hook)\n ? hook.some(h => h.length > 1)\n : hook.length > 1\n : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n const finishEnter = (el, isAppear, done) => {\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n // force reflow so *-leave-from classes immediately take effect (#2593)\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n nextFrame(() => {\n if (!el._isLeaving) {\n // cancelled\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n }\n else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n }\n else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if ((process.env.NODE_ENV !== 'production'))\n validateDuration(res);\n return res;\n}\nfunction validateDuration(val) {\n if (typeof val !== 'number') {\n warn(`<transition> explicit duration is not a valid number - ` +\n `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`<transition> explicit duration is NaN - ` +\n 'the duration expression might be incorrect.');\n }\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\n (el._vtc ||\n (el._vtc = new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\n const { _vtc } = el;\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el._vtc = undefined;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = (el._endId = ++endId);\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + 'end';\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\n const transitionDelays = getStyleProperties(TRANSITION + 'Delay');\n const transitionDurations = getStyleProperties(TRANSITION + 'Duration');\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(ANIMATION + 'Delay');\n const animationDurations = getStyleProperties(ANIMATION + 'Duration');\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n }\n else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n }\n else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type =\n timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n const hasTransform = type === TRANSITION &&\n /\\b(transform|all)(,|$)/.test(styles[TRANSITION + 'Property']);\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\n// numbers in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down\n// (i.e. acting as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n// synchronously force layout to put elements into a certain state\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nconst positionMap = new WeakMap();\nconst newPositionMap = new WeakMap();\nconst TransitionGroupImpl = {\n name: 'TransitionGroup',\n props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n // children is guaranteed to exist after initial render\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\n return;\n }\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n // force reflow to put everything in position\n forceReflow();\n movedChildren.forEach(c => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = '';\n const cb = (el._moveCb = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener('transitionend', cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n el.addEventListener('transitionend', cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = children;\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el._moveCb) {\n el._moveCb();\n }\n if (el._enterCb) {\n el._enterCb();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = '0s';\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n const clone = el.cloneNode();\n if (el._vtc) {\n el._vtc.forEach(cls => {\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\n clone.style.display = 'none';\n const container = (root.nodeType === 1 ? root : root.parentNode);\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props['onUpdate:modelValue'] ||\n (false );\n return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event('input'));\n }\n}\n// We are exporting the v-model runtime directly as vnode hooks so that it can\n// be tree-shaken in case v-model is never used.\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n const castToNumber = number || (vnode.props && vnode.props.type === 'number');\n addEventListener(el, lazy ? 'change' : 'input', e => {\n if (e.target.composing)\n return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = toNumber(domValue);\n }\n el._assign(domValue);\n });\n if (trim) {\n addEventListener(el, 'change', () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, 'compositionstart', onCompositionStart);\n addEventListener(el, 'compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n addEventListener(el, 'change', onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? '' : value;\n },\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n // avoid clearing unresolved text. #2302\n if (el.composing)\n return;\n if (document.activeElement === el && el.type !== 'range') {\n if (lazy) {\n return;\n }\n if (trim && el.value.trim() === value) {\n return;\n }\n if ((number || el.type === 'number') && toNumber(el.value) === value) {\n return;\n }\n }\n const newValue = value == null ? '' : value;\n if (el.value !== newValue) {\n el.value = newValue;\n }\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el._assign;\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n }\n else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n }\n else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n }\n else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n }\n else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el._assign = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n if (isArray(value)) {\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\n }\n else if (isSet(value)) {\n el.checked = value.has(vnode.props.value);\n }\n else if (value !== oldValue) {\n el.checked = looseEqual(value, getCheckboxValue(el, true));\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n el._assign(getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el._assign = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, 'change', () => {\n const selectedVal = Array.prototype.filter\n .call(el.options, (o) => o.selected)\n .map((o) => number ? toNumber(getValue(o)) : getValue(o));\n el._assign(el.multiple\n ? isSetModel\n ? new Set(selectedVal)\n : selectedVal\n : selectedVal[0]);\n });\n el._assign = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el._assign = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n setSelected(el, value);\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n if (isMultiple && !isArray(value) && !isSet(value)) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`<select multiple v-model> expects an Array or Set value for its binding, ` +\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArray(value)) {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n else {\n option.selected = value.has(optionValue);\n }\n }\n else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i)\n el.selectedIndex = i;\n return;\n }\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\n// retrieve raw value set via :value bindings\nfunction getValue(el) {\n return '_value' in el ? el._value : el.value;\n}\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\nfunction getCheckboxValue(el, checked) {\n const key = checked ? '_trueValue' : '_falseValue';\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'created');\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'mounted');\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'updated');\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case 'SELECT':\n return vModelSelect;\n case 'TEXTAREA':\n return vModelText;\n default:\n switch (type) {\n case 'checkbox':\n return vModelCheckbox;\n case 'radio':\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n }\n else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n }\n else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== 'string') {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(), vnode.props && vnode.props.type);\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\nconst modifierGuards = {\n stop: e => e.stopPropagation(),\n prevent: e => e.preventDefault(),\n self: e => e.target !== e.currentTarget,\n ctrl: e => !e.ctrlKey,\n shift: e => !e.shiftKey,\n alt: e => !e.altKey,\n meta: e => !e.metaKey,\n left: e => 'button' in e && e.button !== 0,\n middle: e => 'button' in e && e.button !== 1,\n right: e => 'button' in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\n};\n/**\n * @private\n */\nconst withModifiers = (fn, modifiers) => {\n return (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers))\n return;\n }\n return fn(event, ...args);\n };\n};\n// Kept for 2.x compat.\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\nconst keyNames = {\n esc: 'escape',\n space: ' ',\n up: 'arrow-up',\n left: 'arrow-left',\n right: 'arrow-right',\n down: 'arrow-down',\n delete: 'backspace'\n};\n/**\n * @private\n */\nconst withKeys = (fn, modifiers) => {\n return (event) => {\n if (!('key' in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\n return fn(event);\n }\n };\n};\n\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el._vod = el.style.display === 'none' ? '' : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n }\n else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue)\n return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n }\n else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n }\n else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el._vod : 'none';\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: 'none' } };\n }\n };\n}\n\nconst rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);\n// lazy create the renderer - this makes core renderer logic tree-shakable\n// in case the user only imports reactivity utilities from Vue.\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return (renderer ||\n (renderer = createRenderer(rendererOptions)));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration\n ? renderer\n : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container)\n return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n // __UNSAFE__\n // Reason: potential execution of JS expressions in in-DOM template.\n // The user must make sure the in-DOM template is trusted. If it's\n // rendered by the server, the template should not contain any user data.\n component.template = container.innerHTML;\n }\n // clear content before mounting\n container.innerHTML = '';\n const proxy = mount(container, false, container instanceof SVGElement);\n if (container instanceof Element) {\n container.removeAttribute('v-cloak');\n container.setAttribute('data-v-app', '');\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, container instanceof SVGElement);\n }\n };\n return app;\n});\nfunction injectNativeTagCheck(app) {\n // Inject `isNativeTag`\n // this is used for component name validation (dev only)\n Object.defineProperty(app.config, 'isNativeTag', {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n writable: false\n });\n}\n// dev only\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, 'isCustomElement', {\n get() {\n return isCustomElement;\n },\n set() {\n warn(`The \\`isCustomElement\\` config option is deprecated. Use ` +\n `\\`compilerOptions.isCustomElement\\` instead.`);\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using ` +\n `a build of Vue.js that includes the runtime compiler (aka \"full build\"). ` +\n `Since you are using the runtime-only build, \\`compilerOptions\\` ` +\n `must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\\n` +\n `- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\\n` +\n `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\\n` +\n `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;\n Object.defineProperty(app.config, 'compilerOptions', {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if ((process.env.NODE_ENV !== 'production') && !res) {\n warn(`Failed to mount app: mount target selector \"${container}\" returned null.`);\n }\n return res;\n }\n if ((process.env.NODE_ENV !== 'production') &&\n window.ShadowRoot &&\n container instanceof window.ShadowRoot &&\n container.mode === 'closed') {\n warn(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\n/**\n * @internal\n */\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n }\n ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","/*!\n * vue-router v4.1.6\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || obj[Symbol.toStringTag] === 'Module';\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = isArray(value)\r\n ? value.map(fn)\r\n : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\r\n/**\r\n * Typesafe alternative to Array.isArray\r\n * https://github.com/microsoft/TypeScript/pull/48228\r\n */\r\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms a URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n // TODO: move to new URL()\r\n const hashPos = location.indexOf('#');\r\n let searchPos = location.indexOf('?');\r\n // the hash appears before the search, so it's not part of the search string\r\n if (hashPos < searchPos && hashPos >= 0) {\r\n searchPos = -1;\r\n }\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // we stay on the same position\r\n if (segment === '.')\r\n continue;\r\n // go up in the from array\r\n if (segment === '..') {\r\n // we can't go below zero, but we still need to increment toPosition\r\n if (position > 1)\r\n position--;\r\n // continue\r\n }\r\n // we reached a non-relative path, we stop here\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n // ensure we use at least the last element in the toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect <base> tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler<ScrollPosition> = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // set up the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // set up the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor, and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided, and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/router/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `<base>` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/router/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\r\n * handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag\r\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\r\n * calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything\r\n * after the `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if ((process.env.NODE_ENV !== 'production') || !true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {\r\n return assign(new Error(), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non-greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub-segment /:a-other-:b\r\n let subSegmentScore = 40 /* PathScore.Segment */ +\r\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* TokenType.Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* PathScore.Static */;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* PathScore.Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* PathScore.BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* TokenType.Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (isArray(param) && !repeatable) {\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n }\r\n const text = isArray(param)\r\n ? param.join('/')\r\n : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n // avoid empty path when we have multiple optional params\r\n return path || '/';\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n if (Math.abs(bScore.length - aScore.length) === 1) {\r\n if (isLastScoreNegative(aScore))\r\n return 1;\r\n if (isLastScoreNegative(bScore))\r\n return -1;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\r\n/**\r\n * This allows detecting splats at the end of a path: /home/:id(.*)*\r\n *\r\n * @param score - score to check\r\n * @returns true if the last entry is negative\r\n */\r\nfunction isLastScoreNegative(score) {\r\n const last = score[score.length - 1];\r\n return score.length > 0 && last[last.length - 1] < 0;\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* TokenType.Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map<string, Token[][]>()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error((process.env.NODE_ENV !== 'production')\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : `Invalid path \"${path}\"`);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* TokenizerState.Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* TokenizerState.Static */) {\r\n segment.push({\r\n type: 0 /* TokenType.Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* TokenizerState.Param */ ||\r\n state === 2 /* TokenizerState.ParamRegExp */ ||\r\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* TokenType.Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* TokenizerState.EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* TokenizerState.Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* TokenizerState.Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* TokenizerState.EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* TokenizerState.Param */:\r\n if (char === '(') {\r\n state = 2 /* TokenizerState.ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* TokenizerState.ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* TokenizerState.ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* TokenizerState.ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* TokenizerState.ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\r\n }\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object beforehand, so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist,\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if (mainNormalizedRecord.children) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other aliases (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\r\n // not be reached and pass through the catch all route\r\n if ((matcher.record.components &&\r\n Object.keys(matcher.record.components).length) ||\r\n matcher.record.name ||\r\n matcher.record.redirect) {\r\n insertMatcher(matcher);\r\n }\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0 &&\r\n // Adding children with empty path should still appear before the parent\r\n // https://github.com/vuejs/router/issues/1124\r\n (matcher.record.path !== matchers[i].record.path ||\r\n !isRecordChildOf(matcher, matchers[i])))\r\n i++;\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n // warn if the user is passing invalid params so they can debug it better when they get removed\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\r\n if (invalidParams.length) {\r\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\r\n }\r\n }\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), \r\n // discard any existing params in the current location that do not exist here\r\n // #1497 this ensures better active/exact matching\r\n location.params &&\r\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/router.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || null\r\n : record.component && { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records, but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\n/**\r\n * A route with a name and a child with an empty path without a name should warn when adding the route\r\n *\r\n * @param mainNormalizedRecord - RouteRecordNormalized\r\n * @param parent - RouteRecordMatcher\r\n */\r\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\r\n if (parent &&\r\n parent.record.name &&\r\n !mainNormalizedRecord.name &&\r\n !mainNormalizedRecord.path) {\r\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\r\nfunction isRecordChildOf(record, parent) {\r\n return parent.children.some(child => child === record || isRecordChildOf(record, child));\r\n}\n\n/**\r\n * Encoding Rules ⣠= Space Path: ⣠\" < > # ? { } Query: ⣠\" < > # & = Hash: ⣠\"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query, but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n onUnmounted(removeFromList);\r\n onDeactivated(removeFromList);\r\n onActivated(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false) {\r\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n }\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function') {\r\n enterCallbackArray.push(valid);\r\n }\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\r\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\r\n ` or \"children\" property.`);\r\n }\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n * @internal\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\r\n/**\r\n * Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`.\r\n *\r\n * @param route - resolved route to load\r\n */\r\nfunction loadRouteLocation(route) {\r\n return route.matched.every(record => record.redirect)\r\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\r\n : Promise.all(route.matched.map(record => record.components &&\r\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\r\n const rawComponent = record.components[name];\r\n if (typeof rawComponent === 'function' &&\r\n !('displayName' in rawComponent)) {\r\n promises.push(rawComponent().then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n return;\r\n }));\r\n }\r\n return promises;\r\n }, [])))).then(() => route);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = inject(routerKey);\r\n const currentRoute = inject(routeLocationKey);\r\n const route = computed(() => router.resolve(unref(props.to)));\r\n const activeRecordIndex = computed(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = computed(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n watchEffect(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n /**\r\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\r\n */\r\n return {\r\n route,\r\n href: computed(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterLink',\r\n compatConfig: { MODE: 3 },\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = reactive(useLink(props));\r\n const { options } = inject(routerKey);\r\n const elClass = computed(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : h('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener, so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n // Better compat for @vue/compat users\r\n // https://github.com/vuejs/router/issues/1315\r\n compatConfig: { MODE: 3 },\r\n setup(props, { attrs, slots }) {\r\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\r\n const injectedRoute = inject(routerViewLocationKey);\r\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\r\n const injectedDepth = inject(viewDepthKey, 0);\r\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\r\n // that are used to reuse the `path` property\r\n const depth = computed(() => {\r\n let initialDepth = unref(injectedDepth);\r\n const { matched } = routeToDisplay.value;\r\n let matchedRoute;\r\n while ((matchedRoute = matched[initialDepth]) &&\r\n !matchedRoute.components) {\r\n initialDepth++;\r\n }\r\n return initialDepth;\r\n });\r\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\r\n provide(viewDepthKey, computed(() => depth.value + 1));\r\n provide(matchedRouteKey, matchedRouteRef);\r\n provide(routerViewLocationKey, routeToDisplay);\r\n const viewRef = ref();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name, so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[currentName];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth: depth.value,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and <component :is=\"...\"> both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with <transition> & <keep-alive>\r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = getCurrentInstance();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `<router-view v-slot=\"{ Component }\">\\n` +\r\n ` <${comp}>\\n` +\r\n ` <component :is=\"Component\" />\\n` +\r\n ` </${comp}>\\n` +\r\n `</router-view>`);\r\n }\r\n}\n\n/**\r\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\r\n *\r\n * @param routeLocation - routeLocation to format\r\n * @param tooltip - optional tooltip\r\n * @returns a copy of the routeLocation\r\n */\r\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n setupDevtoolsPlugin({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://router.vuejs.org',\r\n logo: 'https://router.vuejs.org/logo.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n if (typeof api.now !== 'function') {\r\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n }\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by <router-view>',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n watch(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: api.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: api.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('âŒ');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: api.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n if (Object.keys(route.record.meta).length) {\r\n fields.push({\r\n editable: false,\r\n key: 'meta',\r\n value: route.record.meta,\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: typeof record.redirect === 'string'\r\n ? `redirect: ${record.redirect}`\r\n : 'redirects',\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // the matcher might have merged current location params, so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n // avoid transferring params if the redirect has a path\r\n params: 'path' in newTargetLocation ? {} : to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: typeof shouldRedirect === 'object'\r\n ? assign({}, data, shouldRedirect.state)\r\n : data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? // navigation redirects still mark the router as ready\r\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\r\n ? error\r\n : markAsReady(error) // also returns the error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign({\r\n // preserve an existing replacement but allow the redirect to override it\r\n replace,\r\n }, locationAsObject(failure.to), {\r\n state: typeof failure.to === 'object'\r\n ? assign({}, data, failure.to.state)\r\n : data,\r\n force,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component>\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n // avoid setting up listeners twice due to an invalid first navigation\r\n if (removeHistoryListener)\r\n return;\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n if (!router.listening)\r\n return;\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is no guarantee for\r\n // it to work on every browser. So instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing, but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\r\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta &&\r\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\r\n // entry while a different route is displayed\r\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n function markAsReady(err) {\r\n if (!ready) {\r\n // still not ready if an error happened\r\n ready = !err;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n return err;\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return nextTick()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n listening: true,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => unref(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = computed(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, reactive(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n removeHistoryListener = null;\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n // TODO: this probably needs to be updated so it can be used by vue-termui\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return inject(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return inject(routeLocationKey);\r\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","export default \"__VITE_ASSET__a579af60__\"","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {void}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const result = {};\n const assignValue = (val, key) => {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[_-\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport envFormData from '../env/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (envFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n (utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default FormData;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\nconst $defaults = Symbol('defaults');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nfunction matchHeaderValue(context, value, header, filter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nfunction AxiosHeaders(headers, defaults) {\n headers && this.set(headers);\n this[$defaults] = defaults || null;\n}\n\nObject.assign(AxiosHeaders.prototype, {\n set: function(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = findKey(self, lHeader);\n\n if (key && _rewrite !== true && (self[key] === false || _rewrite === false)) {\n return;\n }\n\n self[key || _header] = normalizeValue(_value);\n }\n\n if (utils.isPlainObject(header)) {\n utils.forEach(header, (_value, _header) => {\n setHeader(_value, _header, valueOrRewrite);\n });\n } else {\n setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n },\n\n get: function(header, parser) {\n header = normalizeHeader(header);\n\n if (!header) return undefined;\n\n const key = findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n },\n\n has: function(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = findKey(this, header);\n\n return !!(key && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n },\n\n delete: function(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n },\n\n clear: function() {\n return Object.keys(this).forEach(this.delete.bind(this));\n },\n\n normalize: function(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n },\n\n toJSON: function(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(Object.assign({}, this[$defaults] || null, this),\n (value, header) => {\n if (value == null || value === false) return;\n obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value;\n });\n\n return obj;\n }\n});\n\nObject.assign(AxiosHeaders, {\n from: function(thing) {\n if (utils.isString(thing)) {\n return new this(parseHeaders(thing));\n }\n return thing instanceof this ? thing : new this(thing);\n },\n\n accessor: function(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n});\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nexport default function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && platform.isStandardBrowserEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\n\nconst adapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nexport default {\n getAdapter: (nameOrAdapter) => {\n if(utils.isString(nameOrAdapter)){\n const adapter = adapters[nameOrAdapter];\n\n if (!nameOrAdapter) {\n throw Error(\n utils.hasOwnProp(nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Can not resolve adapter '${nameOrAdapter}'`\n );\n }\n\n return adapter\n }\n\n if (!utils.isFunction(nameOrAdapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return nameOrAdapter;\n },\n adapters\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\nimport adapters from '../adapters/index.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\n/**\n * If the browser has an XMLHttpRequest object, use the XHR adapter, otherwise use the HTTP\n * adapter\n *\n * @returns {Function}\n */\nfunction getDefaultAdapter() {\n let adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = adapters.getAdapter('xhr');\n } else if (typeof process !== 'undefined' && utils.kindOf(process) === 'process') {\n // For node use HTTP adapter\n adapter = adapters.getAdapter('http');\n }\n return adapter;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n const adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n const mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.1.3\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n const defaultHeaders = config.headers && utils.merge(\n config.headers.common,\n config.headers[config.method]\n );\n\n defaultHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n config.headers = new AxiosHeaders(config.headers, defaultHeaders);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\naxios.formToJSON = thing => {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nexport default axios\n","import globalAxios, { type AxiosInstance, type AxiosPromise, type AxiosResponse } from \"axios\";\r\n\r\nexport const BASE_PATH = \"\";\r\nconst DUMMY_BASE_URL = \"https://example.com\";\r\n\r\ninterface RequestArgs {\r\n url: string;\r\n options: any;\r\n}\r\n\r\nexport interface ConfigurationParameters {\r\n accessToken?:\r\n | string\r\n | Promise<string>\r\n | ((name?: string, scopes?: string[]) => string)\r\n | ((name?: string, scopes?: string[]) => Promise<string>);\r\n basePath?: string;\r\n baseOptions?: any;\r\n}\r\n\r\nexport class Configuration {\r\n accessToken?:\r\n | string\r\n | Promise<string>\r\n | ((name?: string, scopes?: string[]) => string)\r\n | ((name?: string, scopes?: string[]) => Promise<string>);\r\n basePath?: string;\r\n baseOptions?: any;\r\n\r\n public isJsonMime(mime: string): boolean {\r\n // eslint-disable-next-line\r\n const jsonMime: RegExp = new RegExp(\"^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$\", \"i\");\r\n return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === \"application/json-patch+json\");\r\n }\r\n\r\n constructor(param: ConfigurationParameters = {}) {\r\n this.accessToken = param.accessToken;\r\n this.basePath = param.basePath;\r\n this.baseOptions = param.baseOptions;\r\n }\r\n}\r\n\r\nconst setBearerAuthToObject = async function (object: any, configuration?: Configuration) {\r\n if (configuration && configuration.accessToken) {\r\n const accessToken =\r\n typeof configuration.accessToken === \"function\"\r\n ? await configuration.accessToken()\r\n : await configuration.accessToken;\r\n object[\"Authorization\"] = \"Bearer \" + accessToken;\r\n }\r\n};\r\n\r\nconst setSearchParams = function (url: URL, ...objects: any[]) {\r\n const searchParams = new URLSearchParams(url.search);\r\n for (const object of objects) {\r\n for (const key in object) {\r\n searchParams.set(key, object[key]);\r\n }\r\n }\r\n url.search = searchParams.toString();\r\n};\r\n\r\nconst objectToFormData = function (obj: any) {\r\n const fd = new FormData();\r\n for (const kv of Object.entries(obj)) {\r\n if (kv[1] instanceof Blob) fd.append(kv[0], kv[1]);\r\n else if (kv[1] instanceof Array) for (const v of kv[1]) fd.append(kv[0], v);\r\n else fd.append(kv[0], kv[1] as any);\r\n }\r\n return fd;\r\n};\r\n\r\nconst createRequestFunction = function (axiosArgs: RequestArgs, configuration?: Configuration) {\r\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\r\n const axiosRequestArgs = {\r\n ...axiosArgs.options,\r\n url: (configuration != null && configuration != undefined ? configuration.basePath : basePath) + axiosArgs.url\r\n };\r\n return axios.request(axiosRequestArgs);\r\n };\r\n};\r\n\r\nconst toPathString = function (url: URL) {\r\n return url.pathname + url.search + url.hash;\r\n};\r\n\r\nconst serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) {\r\n const nonString = typeof value !== \"string\";\r\n const needsSerialization =\r\n nonString && configuration && configuration.isJsonMime\r\n ? configuration.isJsonMime(requestOptions.headers[\"Content-Type\"])\r\n : nonString;\r\n return needsSerialization ? JSON.stringify(value !== undefined ? value : {}) : value || \"\";\r\n};\r\n\r\nconst ApiAxiosParamCreator = function (configuration?: Configuration) {\r\n return {\r\n CrearRequestArgs: async (\r\n localVarPath: string,\r\n method: string,\r\n localVarQueryParameter: any,\r\n requiereAutenticacion: boolean,\r\n data: any | undefined,\r\n options: any = {}\r\n ): Promise<RequestArgs> => {\r\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\r\n const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\r\n let baseOptions;\r\n if (configuration) {\r\n baseOptions = configuration.baseOptions;\r\n }\r\n\r\n const localVarRequestOptions = { method, ...baseOptions, ...options };\r\n const localVarHeaderParameter = {} as any;\r\n\r\n // authentication bearerAuth required\r\n if (requiereAutenticacion) await setBearerAuthToObject(localVarHeaderParameter, configuration);\r\n\r\n if (data instanceof FormData) localVarHeaderParameter[\"Content-Type\"] = \"multipart/form-data\";\r\n else localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\r\n\r\n setSearchParams(localVarUrlObj, localVarQueryParameter, options.query);\r\n const headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\r\n localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };\r\n localVarRequestOptions.withCredentials = true;\r\n if (data != undefined)\r\n localVarRequestOptions.data = serializeDataIfNeeded(data, localVarRequestOptions, configuration);\r\n\r\n return {\r\n url: toPathString(localVarUrlObj),\r\n options: localVarRequestOptions\r\n };\r\n }\r\n };\r\n};\r\n\r\nconst ApiFp = function (configuration?: Configuration) {\r\n const localVarAxiosParamCreator = ApiAxiosParamCreator(configuration);\r\n return {\r\n async CrearSolicitador(\r\n localVarPath: string,\r\n method: string,\r\n localVarQueryParameter: any,\r\n requiereAutenticacion: boolean,\r\n data: any,\r\n esBlob: boolean,\r\n options?: any\r\n ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {\r\n const localVarAxiosArgs = await localVarAxiosParamCreator.CrearRequestArgs(\r\n localVarPath,\r\n method,\r\n localVarQueryParameter,\r\n requiereAutenticacion,\r\n data,\r\n options\r\n );\r\n localVarAxiosArgs.options.responseType = esBlob ? \"blob\" : \"json\";\r\n return createRequestFunction(localVarAxiosArgs, configuration);\r\n }\r\n };\r\n};\r\n\r\nclass BaseAPI {\r\n protected configuration: Configuration | undefined;\r\n\r\n constructor(\r\n configuration?: Configuration,\r\n protected basePath: string = BASE_PATH,\r\n protected axios: AxiosInstance = globalAxios\r\n ) {\r\n if (configuration) {\r\n this.configuration = configuration;\r\n this.basePath = configuration.basePath || this.basePath;\r\n }\r\n }\r\n}\r\n\r\nexport enum EstadoRespuesta {\r\n OK = \"OK\",\r\n ALERT = \"ALERT\",\r\n INFO = \"INFO\",\r\n ERROR = \"ERROR\",\r\n NO_AUTORIZADO = \"NO_AUTORIZADO\"\r\n}\r\n\r\nexport interface Respuesta {\r\n estado: EstadoRespuesta;\r\n mensaje?: string;\r\n data?: any;\r\n}\r\n\r\nexport class IdentityApi extends BaseAPI {\r\n public CrearUsuarioUrl = \"/api/Identity/CrearUsuario\";\r\n\r\n public async CrearUsuario(\r\n crearUsuarioBody: Identity.CrearUsuarioBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Microsoft.AspNetCore.Identity.IdentityError[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = crearUsuarioBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Identity/CrearUsuario\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ConfirmarCorreoElectronicoUrl = \"/api/Identity/ConfirmarCorreoElectronico\";\r\n\r\n public async ConfirmarCorreoElectronico(\r\n userId: number,\r\n token: string,\r\n callbackUrl: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n userId: userId,\r\n token: token,\r\n callbackUrl: callbackUrl\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Identity/ConfirmarCorreoElectronico\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public LoginUrl = \"/api/Identity/Login\";\r\n\r\n public async Login(loginBody: Identity.LoginBody, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = loginBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Identity/Login\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n}\r\n\r\nexport namespace Identity {\r\n /**\r\n * @description Esquema para crear un usuario\r\n */\r\n export interface CrearUsuarioBody {\r\n /**\r\n * @description Debe de ser el correo electrónico del usuario\r\n */\r\n usuario?: string;\r\n contrasenia?: string;\r\n urlConfirmacionCorreoElectronico?: string;\r\n /**\r\n * @default false\r\n */\r\n crearEnAuthHIR?: boolean;\r\n }\r\n\r\n export interface LoginBody {\r\n usuario: string;\r\n contrasenia: string;\r\n }\r\n}\r\n\r\nexport namespace System {\r\n export interface TimeSpan {\r\n ticks: number;\r\n days: number;\r\n hours: number;\r\n milliseconds: number;\r\n minutes: number;\r\n seconds: number;\r\n totalDays: number;\r\n totalHours: number;\r\n totalMilliseconds: number;\r\n totalMinutes: number;\r\n totalSeconds: number;\r\n }\r\n}\r\n\r\nexport namespace Cliente {\r\n export namespace Cliente {\r\n export namespace Enums {\r\n export enum Aplicacion {\r\n APP_MOVIL = \"APP_MOVIL\",\r\n PORTAL_CLIENTE = \"PORTAL_CLIENTE\"\r\n }\r\n }\r\n\r\n export namespace Home {\r\n /**\r\n * @description Cuerbo de Cambiar contraseña Token\r\n */\r\n export interface CambiarContraseniaTokenBody {\r\n /**\r\n * @description Token generado\r\n */\r\n token?: string;\r\n /**\r\n * @description Contraseña a actualizar\r\n */\r\n contrasenia: string;\r\n }\r\n\r\n /**\r\n * @description Cuerpo para Generar PIN\r\n */\r\n export interface GenerarPINBody {\r\n /**\r\n * @description Correo eletrónico o Telefono\r\n */\r\n valor?: string;\r\n /**\r\n * @description Seleciona medio de contacto 0 MSM y 1 Correo electrónico\r\n */\r\n medioContacto: number;\r\n /**\r\n * @description Proporciona la ubicación del usuario\r\n */\r\n ubicacion?: string;\r\n }\r\n\r\n /**\r\n * @description Información principal del cliente\r\n */\r\n export interface InformacionHome {\r\n contrato: DetalleContrato;\r\n /**\r\n * @description Nombre completo del cliente\r\n */\r\n nombreCompleto?: string;\r\n /**\r\n * @description Si se debe mostrar o no la sección de escrituración (Si tiene asignado un asesor de titulación)\r\n */\r\n mostrarEscrituracion: boolean;\r\n porLiquidar: boolean;\r\n escrituracionID?: string;\r\n /**\r\n * @description Lista de beneficiarios del cliente\r\n */\r\n beneficiarios?: BeneficiarioDetalle[];\r\n /**\r\n * @description Fecha de registro en el Portal del Cliente\r\n */\r\n fechaCreacion: string;\r\n /**\r\n * @description Lista de banners que se le mostrarán al cliente como publicidad\r\n */\r\n banners?: Models.BannerCampania[];\r\n puntoContacto: Core.Models.PuntoContacto;\r\n puntoContacto2: Core.Models.PuntoContacto;\r\n emailPersonal: Core.Models.PuntoContacto;\r\n telefono3: Core.Models.PuntoContacto;\r\n telOficina: Core.Models.PuntoContacto;\r\n email2: Core.Models.PuntoContacto;\r\n ubicacion: Core.Models.UbicacionLocal;\r\n /**\r\n * @description Permite actualzar informacion de la vista del cliente\r\n */\r\n puedeActualizarInformacion: boolean;\r\n /**\r\n * @description Ruta de la ubicacion en SP\r\n */\r\n rutaIne?: string;\r\n }\r\n\r\n /**\r\n * @description Cuerpo para la petición de Login\r\n */\r\n export interface LoginBody {\r\n /**\r\n * @description Correo eletrónico del cliente\r\n */\r\n correo: string;\r\n /**\r\n * @description Contraseña del cliente\r\n */\r\n contrasenia: string;\r\n canal: Core.Enums.Canal;\r\n }\r\n\r\n /**\r\n * @description Respuesta del método RegistrarUsuario\r\n */\r\n export interface RegistrarUsuarioBody {\r\n /**\r\n * @description Numero de contrato del cliente\r\n */\r\n numContrato?: string;\r\n /**\r\n * @description Correo eletrónico del cliente\r\n */\r\n correo?: string;\r\n /**\r\n * @description Contraseña del cliente\r\n */\r\n contrasenia?: string;\r\n /**\r\n * @description El usuario acepta terminos y condiciones\r\n */\r\n aceptarAvisoTerminos: boolean;\r\n canal?: Core.Enums.Canal;\r\n }\r\n\r\n /**\r\n * @description Respuesta del método Login\r\n */\r\n export interface RespuestaLogin {\r\n estado: EstadoRespuesta;\r\n /**\r\n * @description Detalle del estado\r\n */\r\n mensaje?: string;\r\n /**\r\n * @description JWT en caso se usar esa método para autorización\r\n */\r\n token?: string;\r\n /**\r\n * @description Valor que indica si el cliente ya ha aceptado términos, condiciones y aviso de privacidad\r\n */\r\n aceptaTerminosCondicionesAvisoPrivacidad?: boolean;\r\n }\r\n\r\n /**\r\n * @description Respuesta del método Ping\r\n */\r\n export interface RespuestaPing {\r\n /**\r\n * @description Valor que indica si el cliente ya ha aceptado términos, condiciones y aviso de privacidad\r\n */\r\n aceptaTerminosCondicionesAvisoPrivacidad?: boolean;\r\n banners?: Models.BannerCampania[];\r\n }\r\n\r\n /**\r\n * @description Respuesta del método RegistrarUsuario\r\n */\r\n export interface RespuestaRegistrarUsuario {\r\n estado: EstadoRespuesta;\r\n /**\r\n * @description Mensaje que se proporcionara para notificar estado\r\n */\r\n mensaje?: string;\r\n /**\r\n * @description Varible para indicar contraseña valida\r\n */\r\n contraseniaValida?: boolean;\r\n }\r\n }\r\n\r\n export namespace Seguro {\r\n /**\r\n * @description Representa un documento de seguro\r\n */\r\n export interface DocumentoSeguro {\r\n tipoDocumento: Core.Models.TipoDocumentoTramiteSeguro;\r\n /**\r\n * @description Nombre del documento\r\n */\r\n nombreDocumento?: string;\r\n /**\r\n * @description Indica si el cliente lo puede descargar\r\n */\r\n disponible: boolean;\r\n /**\r\n * @description Fecha de carga del documento\r\n */\r\n fechaCarga?: string;\r\n /**\r\n * @description Método de la API en el controlador Seguro que se debe de usar para obtener el documento\r\n */\r\n metodo?: string;\r\n /**\r\n * @description Parámetros que se deben de enviar al método para obtener el documento\r\n */\r\n parametros?: { [k: string]: string };\r\n }\r\n\r\n /**\r\n * @description Clase de Apoyo para Tramite Seguro\r\n */\r\n export interface TramiteSeguro {\r\n /**\r\n * @description Identificador de Tramite Seguro\r\n */\r\n tramiteSeguroId: number;\r\n estatus?: Core.Enums.EstatusTramiteSeguro;\r\n /**\r\n * @description Nombre para Select\r\n */\r\n nombreDictamen?: string;\r\n /**\r\n * @description Para Agrupacion de Contratos de un mismo Tramite\r\n */\r\n folioRecepcion?: string;\r\n }\r\n }\r\n\r\n export namespace Siniestro {\r\n /**\r\n * @description Clase cuerpo para consumir EnviarCorreoSiniestroVida\r\n */\r\n export interface EnviarCorreoSiniestroVidaBody {\r\n /**\r\n * @description Nombre del beneficiario\r\n */\r\n nombreBeneficiario?: string;\r\n /**\r\n * @description Correo del beneficiario\r\n */\r\n correo?: string;\r\n /**\r\n * @description Nombre del titular\r\n */\r\n nombreTitular?: string;\r\n /**\r\n * @description Telefono 1 del beneficiario\r\n */\r\n telefono1?: string;\r\n /**\r\n * @description Telefono 2 del beneficiario\r\n */\r\n telefono2?: string;\r\n }\r\n\r\n export interface ListaDocumentos {\r\n /**\r\n * @description DocumentoSiniestroId cifrado\r\n */\r\n documentoSiniestroId?: string;\r\n /**\r\n * @description Nombre del Documento Cifrado\r\n */\r\n nombreDocumento?: string;\r\n }\r\n\r\n export interface ListaSiniestroconDocumentos {\r\n /**\r\n * @description SiniestroId Cifrado\r\n */\r\n siniestroId?: string;\r\n /**\r\n * @description SiniestroId No Cifrado\r\n */\r\n folioSiniestroId: number;\r\n /**\r\n * @description Nombre a mostra en el Select\r\n */\r\n item?: string;\r\n tipo: Core.Enums.TipoSinestro;\r\n /**\r\n * @description Lista de Rutas de los documentos por Tramite Siniestro\r\n */\r\n documentos?: ListaDocumentos[];\r\n danios: SiniestrosDañosPortalCliente;\r\n /**\r\n * @description Validamos que el siniestro exista en DB o es Temporal\r\n */\r\n existe: boolean;\r\n }\r\n\r\n /**\r\n * @description JSON de Siniestro de Daños\r\n */\r\n export interface SiniestrosDañosPortalCliente {\r\n /**\r\n * @description Fecha de Suceso\r\n */\r\n fechaOcurrido?: string;\r\n /**\r\n * @description Motivo del Siniestro\r\n */\r\n causaSiniestro?: string;\r\n /**\r\n * @description Escribir monto\r\n */\r\n mostrarMonto: boolean;\r\n /**\r\n * @description Valor aprox del monto\r\n */\r\n montoEstimado?: number;\r\n /**\r\n * @description CAlle del siniestro\r\n */\r\n calle?: string;\r\n /**\r\n * @description Numero interior del siniestro\r\n */\r\n numInterior?: string;\r\n /**\r\n * @description Numero ext del siniestro\r\n */\r\n numExterior?: string;\r\n /**\r\n * @description Codigo postal\r\n */\r\n cp?: number;\r\n /**\r\n * @description Colonia del siiestro\r\n */\r\n colonia?: string;\r\n /**\r\n * @description Alcaldia y municpio del siniestro\r\n */\r\n alcaldiaMunicipio?: string;\r\n /**\r\n * @description EStado el siniestro\r\n */\r\n estado?: string;\r\n /**\r\n * @description Nombrel de quien reporta\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Telefono del contacto\r\n */\r\n telefono?: string;\r\n /**\r\n * @description Email del contacto\r\n */\r\n email?: string;\r\n /**\r\n * @description Descripcion del Siniestro\r\n */\r\n descripcion?: string;\r\n rutas: string[];\r\n }\r\n }\r\n\r\n /**\r\n * @description Clase para Actualizar Datos Clientes Referente al Login\r\n */\r\n export interface ActualizarAltaCliente {\r\n /**\r\n * @description Identificar de ClienteID\r\n */\r\n clienteId: number;\r\n /**\r\n * @description Cadena Para Contraseña Actual\r\n */\r\n passwordActual?: string;\r\n /**\r\n * @description Cadena Para Nueva Contraseña\r\n */\r\n passwordNueva?: string;\r\n /**\r\n * @description Cadena para Validar Contraseña\r\n */\r\n repPassword?: string;\r\n estatus: Core.Enums.EstatusSesion;\r\n }\r\n\r\n /**\r\n * @description Representa los detalles del Beneficiario\r\n */\r\n export interface BeneficiarioDetalle {\r\n /**\r\n * @description Beneficiario id Cifrado\r\n */\r\n beneficiarioId?: string;\r\n /**\r\n * @description Nombre(s) del Benefifiario\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Apellido Materno del Beneficiario\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description Apellido Paterno del Bneficiario\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Nombre del Beneficiario\r\n */\r\n nombreCompleto?: string;\r\n /**\r\n * @description Porcentaje\r\n */\r\n porcentaje?: number;\r\n parentesco: Core.Models.Parentesco;\r\n /**\r\n * @description Telefono del Beneficiario\r\n */\r\n telefono?: string;\r\n }\r\n\r\n /**\r\n * @description Clase Custom de Banco\r\n */\r\n export interface BodyBanco {\r\n /**\r\n * @description Identificador del Banco\r\n */\r\n bancoId: number;\r\n /**\r\n * @description Nombre del banco\r\n */\r\n nombre?: string;\r\n }\r\n\r\n /**\r\n * @description Clase para Actualizar Datos Clientes Referente al Login\r\n */\r\n export interface BodyDomiciliacion {\r\n /**\r\n * @description Cuenta Domiciliacion Id\r\n */\r\n cuentaDomiciliacionId?: number;\r\n /**\r\n * @description Cliente ID Cifrado\r\n */\r\n clienteId?: string;\r\n /**\r\n * @description Nombre del Cliente\r\n */\r\n nombreCliente?: string;\r\n /**\r\n * @description Apellidos del Cliente\r\n */\r\n apellidoPaternoCliente?: string;\r\n /**\r\n * @description Apellidos del Cliente\r\n */\r\n apellidoMaternoCliente?: string;\r\n telefonoContacto: Core.Models.PuntoContacto;\r\n /**\r\n * @description Cuenta Clave del Banco del Cliente\r\n */\r\n clabe?: string;\r\n banco: BodyBanco;\r\n /**\r\n * @description Nombre del Tercero\r\n */\r\n nombreTercero?: string;\r\n /**\r\n * @description Telefono del Tercero\r\n */\r\n telefonoTercero?: string;\r\n }\r\n\r\n /**\r\n * @description Clase cosomizada de Colonia\r\n */\r\n export interface ColoniaBody {\r\n /**\r\n * @description Colonia Id\r\n */\r\n coloniaId: number;\r\n /**\r\n * @description nombre de colonia\r\n */\r\n colonia?: string;\r\n }\r\n\r\n /**\r\n * @description Clase customizada de contratos\r\n */\r\n export interface ContratoBody {\r\n contratoId: number[];\r\n numeroContrato: string[];\r\n }\r\n\r\n /**\r\n * @description Clase de Apoyo para Descuentos\r\n */\r\n export interface DescuentosApoyo {\r\n /**\r\n * @description Identificador del Contrato\r\n */\r\n contratoId?: number;\r\n /**\r\n * @description Identificador del Cliente\r\n */\r\n clienteId?: number;\r\n /**\r\n * @description Numero de Contrato Completo\r\n */\r\n numeroCompleto?: string;\r\n /**\r\n * @description Cantidad de Monto Pagado\r\n */\r\n montoPagado?: number;\r\n /**\r\n * @description Descuento Obtenido por Domiciliacion\r\n */\r\n descuentoDomiciliacion?: number;\r\n /**\r\n * @description Descuento Obtenido por Post Domiciliacion\r\n */\r\n descuentoPostDomiciliacion?: number;\r\n /**\r\n * @description Descuento Obtenido por Score\r\n */\r\n descuentoScore?: number;\r\n /**\r\n * @description Descuento Obtenido de Pago Puntual\r\n */\r\n descuentoPagoPuntual?: number;\r\n /**\r\n * @description Descuento Obtenido de Pago Puntual Sostenido\r\n */\r\n descuentoPagoPuntualSostenido?: number;\r\n /**\r\n * @description Descuento Obtenido por Referido\r\n */\r\n descuentoReferidos?: number;\r\n /**\r\n * @description Fecha de Obtencion de Domiciliacion\r\n */\r\n vigenciaDomiciliacionContratar?: string;\r\n /**\r\n * @description Fecha de Obtencion de Post Domiciliacion\r\n */\r\n vigenciaPostDomiciliacion?: string;\r\n /**\r\n * @description Fecha de Obtencion de Score\r\n */\r\n vigenciaScore?: string;\r\n /**\r\n * @description Fecha de Obtencion de Pago Puntual\r\n */\r\n vigenciaPagoPuntual?: string;\r\n /**\r\n * @description Fecha de Obtencion de Pago Puntual Sostenido\r\n */\r\n vigenciaPagoPuntualSostenido?: string;\r\n /**\r\n * @description Fecha de Obtencion de Referidos\r\n */\r\n vigenciaReferidos?: string;\r\n }\r\n\r\n /**\r\n * @description Clase Saber el Detalle sus contratos de un cliente\r\n */\r\n export interface DetalleContrato {\r\n /**\r\n * @description Numero total de contratos puntuales\r\n */\r\n totalContratosPuntuales: number;\r\n /**\r\n * @description Numero total de contratos pendiente de pago\r\n */\r\n totalContratosPendientePago: number;\r\n }\r\n\r\n export interface EnviarCodigoVerificacionMailBody {\r\n clienteId: number;\r\n }\r\n\r\n export interface EnviarCodigoVerificacionPuntoContactoBody {\r\n tipoContacto: Core.Models.TipoContacto;\r\n valor?: string;\r\n }\r\n\r\n export interface EnviarCodigoVerificacionSmsBody {\r\n clienteId: number;\r\n }\r\n\r\n /**\r\n * @description Modelo de Tabla para EstudioSocioeconomico de un Cliente\r\n */\r\n export interface EstudioSocioeconomico {\r\n /**\r\n * @description Identificador Unico de EstudioSocioeconomico\r\n */\r\n estudioSocioeconomicoId?: string;\r\n /**\r\n * @description Clave Foranea de Cliente\r\n */\r\n clienteId: number;\r\n /**\r\n * @description Tipo de Servicio a Contratar\r\n */\r\n servicioContratar?: number;\r\n /**\r\n * @description Tipo de Destino\r\n */\r\n destino?: number;\r\n /**\r\n * @description Valor de Proyecto\r\n */\r\n valorProyecto?: number;\r\n /**\r\n * @description Nombre del Cliente\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Apellido paterno del Cliente\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Apellido Materno del Cliente\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description Fecha de Nacimiento del Cliente\r\n */\r\n fechaNacimiento?: string;\r\n /**\r\n * @description RFC del Cliente\r\n */\r\n rfc?: string;\r\n /**\r\n * @description Calle del Cliente\r\n */\r\n calle?: string;\r\n /**\r\n * @description Numero Exterior de donde vive el Cliente\r\n */\r\n noExterior?: string;\r\n /**\r\n * @description Codigo Postal del Cliente\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description Clave Foranea de Colonia\r\n */\r\n coloniaId?: number;\r\n /**\r\n * @description Numero de Telefono Personal del Cliente\r\n */\r\n telefonoParticular?: string;\r\n /**\r\n * @description Numero Celular Personal del Cliente\r\n */\r\n telefonoCelular?: string;\r\n /**\r\n * @description Email Personal del Cliente\r\n */\r\n emailParticular?: string;\r\n estadoCivil?: Core.Models.EstadoCivil;\r\n regimenMatrimonial?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description Numero de Dependentes Economicos\r\n */\r\n dependientesEconomicos?: number;\r\n /**\r\n * @description Nombre del Conyuge dsi esta casado\r\n */\r\n nombreConyuge?: string;\r\n /**\r\n * @description Fecha de nacimiento de la conyuge del cliente\r\n */\r\n fechaNacimientoConyuge?: string;\r\n /**\r\n * @description Clave Foranea de Pais de Conyuge\r\n */\r\n paisNacionalidadIdConyuge?: number;\r\n /**\r\n * @description Profesion del Cliente\r\n */\r\n profesion?: number;\r\n /**\r\n * @description Ocupacion Actual del Cliente\r\n */\r\n ocupacionActual?: string;\r\n /**\r\n * @description Otra Trabajo\r\n */\r\n laboralOtro?: string;\r\n /**\r\n * @description Donde Labora el Cliente\r\n */\r\n empresaLabora?: string;\r\n /**\r\n * @description Actividad que desarrolla\r\n */\r\n actividadEmpresa?: string;\r\n /**\r\n * @description Telefono de la empresa\r\n */\r\n telefonoEmpresa?: string;\r\n /**\r\n * @description extension de la empresa\r\n */\r\n extensionTelefonicaTrabajo?: string;\r\n /**\r\n * @description email del trabajo\r\n */\r\n emailTrabajo?: string;\r\n /**\r\n * @description puesto del cliente\r\n */\r\n puestoDesempenia?: string;\r\n /**\r\n * @description otro puesto\r\n */\r\n otroPuesto?: string;\r\n /**\r\n * @description mes en la empresa\r\n */\r\n antiguedadLaboralMeses?: number;\r\n /**\r\n * @description nombre de jefe inmedianto de la empresa\r\n */\r\n nombreJefeInmediato?: string;\r\n /**\r\n * @description telefono del jefe inmediato\r\n */\r\n telefonoJefeInmediato?: string;\r\n /**\r\n * @description extension de telfono del jefe\r\n */\r\n extensionJefeInmediato?: string;\r\n /**\r\n * @description Sueldo bruto del trabajo\r\n */\r\n sueldoNominalBruto?: number;\r\n /**\r\n * @description Couta de ISR e IMSS\r\n */\r\n isrImss?: number;\r\n /**\r\n * @description Sueldo Nomial Neto del trabajo\r\n */\r\n sueldoNominalNeto?: number;\r\n /**\r\n * @description Honararios del cliente\r\n */\r\n honorarios?: number;\r\n /**\r\n * @description GRatificaciones del cliente\r\n */\r\n gratificaciones?: number;\r\n /**\r\n * @description REntas del cliente\r\n */\r\n rentas?: number;\r\n /**\r\n * @description comisiones del cliente\r\n */\r\n comisiones?: number;\r\n /**\r\n * @description otros ngresos del cliente\r\n */\r\n otrosIngresos?: number;\r\n /**\r\n * @description total de ingresos del cliente\r\n */\r\n totalIngresos?: number;\r\n /**\r\n * @description suma de los ingresos de la esposa del cliente\r\n */\r\n totalIngresosConyuge?: number;\r\n /**\r\n * @description actividad del conyuge\r\n */\r\n actividadConyuge?: string;\r\n /**\r\n * @description giro de la empresa del donde trabaja conyuge\r\n */\r\n giroConyuge?: string;\r\n /**\r\n * @description meses de antigudad de donde trabaja conyuge\r\n */\r\n antiguedadLaboralConyuge?: number;\r\n /**\r\n * @description RFC del Conyuge\r\n */\r\n rfcConyuge?: string;\r\n /**\r\n * @description Tipo de Vividenda del enum del HIR-CORE\r\n */\r\n tipoViviendaActual?: number;\r\n /**\r\n * @description Nombre del Arrendador\r\n */\r\n nombreArrendador?: string;\r\n /**\r\n * @description Telefono del arrendador\r\n */\r\n telefonoArrendador?: string;\r\n /**\r\n * @description Deuda de Credito\r\n */\r\n pagoMensualCreditos?: number;\r\n /**\r\n * @description Credito de Tarjeta\r\n */\r\n tarjetaCredito?: number;\r\n /**\r\n * @description Valor de Renta que paga\r\n */\r\n renta?: number;\r\n /**\r\n * @description Costo de Colegiaturas\r\n */\r\n colegiaturas?: number;\r\n /**\r\n * @description Gasto de la Familia\r\n */\r\n gastoFamiliar?: number;\r\n /**\r\n * @description Que otras cosas paga\r\n */\r\n otrosEgresos?: number;\r\n /**\r\n * @description Suma de los Egresos anteriores\r\n */\r\n totalEgresos?: number;\r\n nombreRefFamiliar?: string;\r\n telefonoRefFamiliar?: string;\r\n direccionREfFamiliar?: string;\r\n nombreRefLaboral?: string;\r\n telefonoRefLaboral?: string;\r\n direccionREfLaboral?: string;\r\n nombreRefContacto?: string;\r\n telefonoRefContacto?: string;\r\n direccionREfContacto?: string;\r\n /**\r\n * @description Es Aval o Obligado Solidario\r\n */\r\n esAvalObligadoSolidario: boolean;\r\n /**\r\n * @description Verifica ren HirCORE.\r\n */\r\n esDeclaradoMoratoriaSuspensionPagos: boolean;\r\n /**\r\n * @description Tienen Demanda\r\n */\r\n esDemandadoIncumplimientoObligacionesFinancieras: boolean;\r\n /**\r\n * @description Nombre del Vendedor\r\n */\r\n nombreVendedor?: string;\r\n /**\r\n * @description Telefono del Vendedor\r\n */\r\n telefonoVendedor?: string;\r\n /**\r\n * @description Celular del Vendedor\r\n */\r\n celularVendedor?: string;\r\n /**\r\n * @description Email del Vendedor\r\n */\r\n emailVendedor?: string;\r\n /**\r\n * @description Email de donde trabaja el vendedor\r\n */\r\n emailLaboralVendedor?: string;\r\n /**\r\n * @description Fecha de Nacimiento Vendedor\r\n */\r\n fechaNacimientoVendedor?: string;\r\n estadoCivilVendedor?: Core.Models.EstadoCivil;\r\n regimenMatrimonialVendedor?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description Identificaor del pais\r\n */\r\n paisNacionalidadIdVendedor?: number;\r\n /**\r\n * @description Verificar en HirCore\r\n */\r\n proyecto?: string;\r\n /**\r\n * @description Valor Adjudicad\r\n */\r\n montoAdjudicado?: number;\r\n /**\r\n * @description Puntos de Buro de Credito\r\n */\r\n scoreBC?: number;\r\n /**\r\n * @description Nacionalidad\r\n */\r\n paisNacionalidadId: number;\r\n /**\r\n * @description Version en Estudio SocioEconomico\r\n */\r\n version: number;\r\n nombreGaranteHipotecario?: string;\r\n telefonoGaranteHipotecario?: string;\r\n celularGaranteHipotecario?: string;\r\n emailGaranteHipotecario?: string;\r\n emailLaboralGaranteHipotecario?: string;\r\n fechaNacimientoGaranteHipotecario?: string;\r\n estadoCivilGaranteHipotecario?: Core.Models.EstadoCivil;\r\n regimenMatrimonialGaranteHipotecario?: Core.Models.RegimenMatrimonial;\r\n paisNacionalidadIdGaranteHipotecario?: number;\r\n /**\r\n * @description Trabaja Conyuge\r\n */\r\n trabajaConyuge?: boolean;\r\n /**\r\n * @description JSON de Ingresos\r\n */\r\n ingresos?: string;\r\n /**\r\n * @description Medio de Contacto\r\n */\r\n medioPreferidoContacto?: string;\r\n /**\r\n * @description Enviar Notificacion al Asesor\r\n */\r\n notificacionAscesor: boolean;\r\n /**\r\n * @description Esta Activado AES\r\n */\r\n usuarioBloqueadorId?: number;\r\n /**\r\n * @description JSON de Documentos Cliente\r\n */\r\n documentos?: string;\r\n /**\r\n * @description Documento Conyuge\r\n */\r\n documentosConyuge?: string;\r\n /**\r\n * @description Docuemtnos de Conyuge GH\r\n */\r\n documentosConyugeGaranteHipotecario?: string;\r\n /**\r\n * @description JSON de Documentos GH\r\n */\r\n documentosGaranteHipotecario?: string;\r\n /**\r\n * @description JSON Documeno Vendedor\r\n */\r\n documentosVendedor?: string;\r\n /**\r\n * @description JSON Documentos Conyuge Vendedor\r\n */\r\n documentosConyugeVendedor?: string;\r\n /**\r\n * @description Contratos Involucrados\r\n */\r\n contratosInvolucrados?: string;\r\n procedimientoAdjudicacion?: Core.Models.ProcedimientoAdjudicacion;\r\n /**\r\n * @description Cantidad de Coutas\r\n */\r\n cuotas?: number;\r\n /**\r\n * @description Puede Comprobar ingresos\r\n */\r\n comprobarIngresos?: boolean;\r\n /**\r\n * @description Cliente Radica en el Extranjero\r\n */\r\n clienteRadicaExtranjero?: boolean;\r\n /**\r\n * @description Cliente tiene doble nacionalidad\r\n */\r\n clienteDobleNacionalidad?: boolean;\r\n /**\r\n * @description Ingresos provenen del extranjero\r\n */\r\n ingresosExtranjeros?: boolean;\r\n /**\r\n * @description Descripcion del Inmueble\r\n */\r\n inmuebleDescripcion?: string;\r\n /**\r\n * @description Valor del inmueble\r\n */\r\n inmuebleValorAprox?: number;\r\n /**\r\n * @description Esta grabado inmueble\r\n */\r\n inmuebleGravado?: boolean;\r\n /**\r\n * @description Descripion de Automovil\r\n */\r\n automovilDescripcion?: string;\r\n /**\r\n * @description Valor de los automoviles\r\n */\r\n automovilValorAprox?: number;\r\n /**\r\n * @description Estan Grabados\r\n */\r\n automovilGravado?: boolean;\r\n /**\r\n * @description Edad del Conyuge\r\n */\r\n edadConyugue?: number;\r\n }\r\n\r\n /**\r\n * @description Modelo de clase para mostrar la información del estudio socioeconómico de una figura\r\n */\r\n export interface EstudioSocioeconomicoFigurasApoyoV2 {\r\n /**\r\n * @description Identificador Unico de EstudioSocioeconomico\r\n */\r\n estudioSocioeconomicoId?: string;\r\n /**\r\n * @description Numero de la figura de apoyo\r\n */\r\n numero: number;\r\n figura: TipoFigura;\r\n /**\r\n * @description Version del estudio socioeconómico\r\n */\r\n version: number;\r\n /**\r\n * @description Booleano para saber si un estudio socioeconómico esta bloqueado\r\n */\r\n estudioBloqueado: boolean;\r\n /**\r\n * @description Nombre del cliente\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Apellido del cliente\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Apellido materno del cliente\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description Fecha de nacimiento del cliente\r\n */\r\n fechaNacimiento?: string;\r\n /**\r\n * @description RFC del Cliente\r\n */\r\n rfc?: string;\r\n /**\r\n * @description CURP del Cliente\r\n */\r\n curp?: string;\r\n /**\r\n * @description Calle de domicilio del cliente\r\n */\r\n calle?: string;\r\n /**\r\n * @description Numero interior y exterior del cliente\r\n */\r\n noExterior?: string;\r\n /**\r\n * @description Numero interior de la figura\r\n */\r\n noInterior?: string;\r\n /**\r\n * @description Colonia del cliente\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description Identificador de la colonia de la figura\r\n */\r\n coloniaId?: number;\r\n /**\r\n * @description MunicipioAlcaldia del cliente\r\n */\r\n municipioAlcaldia?: string;\r\n /**\r\n * @description Telefono particular del cliente\r\n */\r\n telefonoParticular?: string;\r\n /**\r\n * @description Telefono celular del cliente\r\n */\r\n telefonoCelular?: string;\r\n /**\r\n * @description Email personal del cliente\r\n */\r\n emailPersonal?: string;\r\n /**\r\n * @description Telefono de trabajo del cliente\r\n */\r\n telefonoTrabajo?: string;\r\n /**\r\n * @description Email de trabajo del cliente\r\n */\r\n emailTrabajo?: string;\r\n /**\r\n * @description Calle del trabajo de la figura de apoyo\r\n */\r\n calleTrabajo?: string;\r\n /**\r\n * @description Número exterior del trabajo de la figura de apoyo\r\n */\r\n noExteriorTrabajo?: string;\r\n /**\r\n * @description Número interior del trabajo de la figura de apoyo\r\n */\r\n noInteriorTrabajo?: string;\r\n /**\r\n * @description Código postal del trabajo de la figura de apoyo\r\n */\r\n codigoPostalTrabajo?: string;\r\n /**\r\n * @description Identificador de la colonia del trabajo de la figura de apoyo\r\n */\r\n coloniaIdTrabajo?: number;\r\n /**\r\n * @description Municipio o AlcaldÃa del trabajo de la de la figura de apoyo\r\n */\r\n municipioAlcaldiaTrabajo?: string;\r\n /**\r\n * @description Número de dependietes económicos de la figura de apoyo\r\n */\r\n numeroDependientes?: number;\r\n estadoCivil?: Core.Models.EstadoCivil;\r\n regimenMatrimonial?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description Nombre del conyuge de la figura de apoyo\r\n */\r\n nombreConyuge?: string;\r\n /**\r\n * @description Apellido Paterno de la figura de apoyo\r\n */\r\n apellidoPaternoConyuge?: string;\r\n /**\r\n * @description Apellido Materno de la figura de apoyo\r\n */\r\n apellidoMaternoConyuge?: string;\r\n /**\r\n * @description Cliente Radica en el Extranjero\r\n */\r\n clienteRadicaExtranjero?: boolean;\r\n /**\r\n * @description Cliente tiene doble nacionalidad\r\n */\r\n clienteDobleNacionalidad?: boolean;\r\n /**\r\n * @description Ingresos provenen del extranjero\r\n */\r\n ingresosExtranjeros?: boolean;\r\n /**\r\n * @description Identificador de la profesion de la figura de apoyo\r\n */\r\n profesion?: number;\r\n /**\r\n * @description Número de las empresas en que trabaja de la figura de apoyo\r\n */\r\n numeroEmpresasTrabaja?: number;\r\n /**\r\n * @description Booleano para sabre si la figura de apoyo puede comprobar ingresos\r\n */\r\n comprobarIngresos?: boolean;\r\n /**\r\n * @description Pago mensual de un prestamo de la figura de apoyo\r\n */\r\n pagoMensualPrestamo?: number;\r\n /**\r\n * @description Pago mensual de la tarjeta de crédito de la figura de apoyo\r\n */\r\n pagoTarjetaCredito?: number;\r\n /**\r\n * @description Pago mensual de la renta de la figura de apoyo\r\n */\r\n pagoRenta?: number;\r\n /**\r\n * @description Pago mensual de la colegiatura de la figura de apoyo\r\n */\r\n pagoColegiaturas?: number;\r\n /**\r\n * @description Gastos mensuales de la familia de la figura de apoyo\r\n */\r\n pagoGastoFamiliar?: number;\r\n /**\r\n * @description Otros egresos / gastos de la de la figura de apoyo\r\n */\r\n otrosEgresos?: number;\r\n tipoViviendaActual?: Core.Models.TipoVivienda;\r\n /**\r\n * @description Nombre del arrendador de la figura de apoyo\r\n */\r\n nombreArrendador?: string;\r\n /**\r\n * @description Nombre del segundo arrendador de la figura de apoyo\r\n */\r\n nombreArrendador2?: string;\r\n /**\r\n * @description Valor del inmueble de la figura de apoyo\r\n */\r\n inmuebleValorAproxPatrimonio?: number;\r\n /**\r\n * @description Esta grabado inmueble de la figura de apoyo\r\n */\r\n inmuebleGravadoPatrimonio?: boolean;\r\n /**\r\n * @description Descrición del automovil de la figura de apoyo\r\n */\r\n automovilDescripcion?: string;\r\n /**\r\n * @description Valor de los automoviles de la figura de apoyo\r\n */\r\n automovilValorAproxPatrimonio?: number;\r\n /**\r\n * @description Si se encuentra pagando el automovil de la figura de apoyo\r\n */\r\n pagandoAutomovilPatrimonio?: boolean;\r\n /**\r\n * @description Teléfono del arrendador de la figura de apoyo\r\n */\r\n telefonoArrendador?: string;\r\n /**\r\n * @description Institución financiera del inmueble de la figura de apoyo\r\n */\r\n institucionFinanciera?: string;\r\n /**\r\n * @description Observaciones generales\r\n */\r\n observacionesGenerales?: string;\r\n }\r\n\r\n /**\r\n * @description Modelo estudio socioeconomico de un cliente v2\r\n */\r\n export interface EstudioSocioeconomicoV2 {\r\n /**\r\n * @description Identificador Unico de EstudioSocioeconomico\r\n */\r\n estudioSocioeconomicoId?: string;\r\n /**\r\n * @description Clave Foranea de Cliente\r\n */\r\n clienteId: number;\r\n /**\r\n * @description Versionado del Estudio Socioeconómico\r\n */\r\n version: number;\r\n /**\r\n * @description Valor Booleano de Estudio bloqueado\r\n */\r\n estudioBloqueado: boolean;\r\n /**\r\n * @description Monto Adjudicado\r\n */\r\n montoAdjudicado?: number;\r\n /**\r\n * @description Mensualidad\r\n */\r\n mensualida?: number;\r\n proyecto?: Core.Models.TipoProyecto;\r\n /**\r\n * @description Booleano para saber si tiene contrato de compraventa\r\n */\r\n tieneContratoPreventa?: boolean;\r\n /**\r\n * @description Valor pactado\r\n */\r\n valorPactado?: number;\r\n /**\r\n * @description Booleano para saber si el inmueble esta gravado\r\n */\r\n inmuebleGravado?: boolean;\r\n usoInmueble?: Core.Enums.UsoInmueble;\r\n /**\r\n * @description Descrición del inmueble a comprar\r\n */\r\n inmuebleDescripcion?: string;\r\n /**\r\n * @description Valor del proyecto\r\n */\r\n valorProyecto?: number;\r\n tipoConstruccion?: Core.Enums.TipoConstruccion;\r\n /**\r\n * @description Booleano para saber si tiene permiso de construcción\r\n */\r\n tienePermisoConstrunccion?: boolean;\r\n /**\r\n * @description Booleano para saber si el vendedor es persona fÃsica\r\n */\r\n vendedorEsPersonaFisica?: boolean;\r\n /**\r\n * @description Nombre del vendedor\r\n */\r\n nombreVendedor?: string;\r\n /**\r\n * @description Apellido paterno del vendedor\r\n */\r\n apellidoPaternoVendedor?: string;\r\n /**\r\n * @description Apellido materno del vendedor\r\n */\r\n apellidoMaternoVendedor?: string;\r\n /**\r\n * @description Teléfono del vendedor\r\n */\r\n telefonoVendedor?: string;\r\n /**\r\n * @description Correo del vendedor\r\n */\r\n correoVendedor?: string;\r\n estadoCivilVendedor?: Core.Models.EstadoCivil;\r\n regimenMatrimonialVendedor?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description Nombre del conyuge del vendedor\r\n */\r\n nombreConyugeVendedor?: string;\r\n /**\r\n * @description Apellido paterno del conyuge del vendedor\r\n */\r\n apellidoPaternoConyugeVendedor?: string;\r\n /**\r\n * @description Aoellido materno del conyuge del vendedor\r\n */\r\n apellidoMaternoConyugeVendedor?: string;\r\n /**\r\n * @description Nombre del Desarrollo\r\n */\r\n nombreDesarrollo?: string;\r\n /**\r\n * @description Nombre del Contacto de desarrollo\r\n */\r\n nombreContactoDesarrollo?: string;\r\n /**\r\n * @description Teléfono del Desarrollo\r\n */\r\n telefonoDesarrollo?: string;\r\n /**\r\n * @description Correo del desarrollo\r\n */\r\n correoDesarrollo?: string;\r\n /**\r\n * @description Nombre del cliente\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Apellido del cliente\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Apellido materno del cliente\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description Fecha de nacimiento del cliente\r\n */\r\n fechaNacimiento?: string;\r\n /**\r\n * @description RFC del Cliente\r\n */\r\n rfc?: string;\r\n /**\r\n * @description CURP del Cliente\r\n */\r\n curp?: string;\r\n /**\r\n * @description Calle de domicilio del cliente\r\n */\r\n calle?: string;\r\n /**\r\n * @description Numero interior y exterior del cliente\r\n */\r\n noExterior?: string;\r\n /**\r\n * @description Numero interior\r\n */\r\n noInterior?: string;\r\n /**\r\n * @description Colonia del cliente\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description Identificador de colonia\r\n */\r\n coloniaId?: number;\r\n /**\r\n * @description MunicipioAlcaldia del cliente\r\n */\r\n municipioAlcaldia?: string;\r\n /**\r\n * @description Telefono particular del cliente\r\n */\r\n telefonoParticular?: string;\r\n /**\r\n * @description Telefono celular del cliente\r\n */\r\n telefonoCelular?: string;\r\n /**\r\n * @description Email personal del cliente\r\n */\r\n emailPersonal?: string;\r\n /**\r\n * @description Telefono de trabajo del cliente\r\n */\r\n telefonoTrabajo?: string;\r\n /**\r\n * @description Email de trabajo del cliente\r\n */\r\n emailTrabajo?: string;\r\n /**\r\n * @description Calle del trabajo\r\n */\r\n calleTrabajo?: string;\r\n /**\r\n * @description Numero exterior del trabajo\r\n */\r\n noExteriorTrabajo?: string;\r\n /**\r\n * @description Numero Interior del trabajo\r\n */\r\n noInteriorTrabajo?: string;\r\n /**\r\n * @description Codigo postal del trabajo\r\n */\r\n codigoPostalTrabajo?: string;\r\n /**\r\n * @description ColoniaId del trabajo\r\n */\r\n coloniaIdTrabajo?: number;\r\n /**\r\n * @description Municipio o Alcaldia del trabajo\r\n */\r\n municipioAlcaldiaTrabajo?: string;\r\n /**\r\n * @description Numero de dependientes económicos\r\n */\r\n numeroDependientes?: number;\r\n estadoCivil?: Core.Models.EstadoCivil;\r\n regimenMatrimonial?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description Nombre de conyuge del cliente\r\n */\r\n nombreConyuge?: string;\r\n /**\r\n * @description Apellido Paterno de Conyuge del cliente\r\n */\r\n apellidoPaternoConyuge?: string;\r\n /**\r\n * @description Apellido materno de conyugel del cliente\r\n */\r\n apellidoMaternoConyuge?: string;\r\n /**\r\n * @description Cliente Radica en el Extranjero\r\n */\r\n clienteRadicaExtranjero?: boolean;\r\n /**\r\n * @description Cliente tiene doble nacionalidad\r\n */\r\n clienteDobleNacionalidad?: boolean;\r\n /**\r\n * @description Booleano para saber si los Ingresos provienen del extranjero\r\n */\r\n ingresosExtranjeros?: boolean;\r\n /**\r\n * @description Identificador de la profesión del cliente\r\n */\r\n profesion?: number;\r\n /**\r\n * @description Numero de empresas en las que trabaja el cliente.\r\n */\r\n numeroEmpresasTrabaja?: number;\r\n /**\r\n * @description Booleano para saber si el cliente puede comprobar ingresos.\r\n */\r\n comprobarIngresos?: boolean;\r\n /**\r\n * @description Pago mensual de los prestamos del cliente\r\n */\r\n pagoMensualPrestamo?: number;\r\n /**\r\n * @description PAgo mensual de la tarjeta de crédito del cliente\r\n */\r\n pagoTarjetaCredito?: number;\r\n /**\r\n * @description Renta mensual del clientge\r\n */\r\n pagoRenta?: number;\r\n /**\r\n * @description Pago de colegiaturas mensuales del cliente\r\n */\r\n pagoColegiaturas?: number;\r\n /**\r\n * @description Gasto familiar mensual del cliente\r\n */\r\n pagoGastoFamiliar?: number;\r\n /**\r\n * @description Otros egresos o pagos del cliente\r\n */\r\n otrosEgresos?: number;\r\n /**\r\n * @description Mensualidad de Hircasa\r\n */\r\n mensualidadHirCasa?: number;\r\n tipoViviendaActual?: Core.Models.TipoVivienda;\r\n /**\r\n * @description Nombre del arrendador del cliente\r\n */\r\n nombreArrendador?: string;\r\n /**\r\n * @description Nombre del segundo arrendador del cliente\r\n */\r\n nombreArrendador2?: string;\r\n /**\r\n * @description Valor del inmueble\r\n */\r\n inmuebleValorAproxPatrimonio?: number;\r\n /**\r\n * @description Descripción del autimovil del cliente\r\n */\r\n automovilDescripcion?: string;\r\n /**\r\n * @description Valor de los automoviles\r\n */\r\n automovilValorAproxPatrimonio?: number;\r\n /**\r\n * @description Si se encuentra pagando el automovil\r\n */\r\n pagandoAutomovilPatrimonio?: boolean;\r\n /**\r\n * @description Teléfono del arrendador del cliengte\r\n */\r\n telefonoArrendador?: string;\r\n /**\r\n * @description Institucion financiera a la que pertenece el inmueble\r\n */\r\n institucionFinanciera?: string;\r\n /**\r\n * @description Observaciones generales\r\n */\r\n observacionesGenerales?: string;\r\n }\r\n\r\n export enum EtapaSeguroVida {\r\n Solicitd = \"Solicitd\",\r\n Revision = \"Revision\",\r\n Analisis = \"Analisis\",\r\n Resultado = \"Resultado\",\r\n Certificado = \"Certificado\",\r\n Dictamen = \"Dictamen\"\r\n }\r\n\r\n /**\r\n * @description Clase Saber el Detalle sus contratos de un cliente\r\n */\r\n export interface FacturacionBody {\r\n /**\r\n * @description Ubicacon Id\r\n */\r\n ubicacionId: number;\r\n /**\r\n * @description Numero total de contratos puntuales\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Numero total de contratos pendiente de pago\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Apellido materno de quien factura\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description RFC del cliente\r\n */\r\n rfc?: string;\r\n /**\r\n * @description Regimen Fiscal del cliente\r\n */\r\n regimenFiscalId?: number;\r\n /**\r\n * @description CAlle de vivienda del cliente\r\n */\r\n calle?: string;\r\n /**\r\n * @description Numero de la ubicacion\r\n */\r\n numero?: string;\r\n /**\r\n * @description Codigo postal\r\n */\r\n cp?: string;\r\n colonia: ColoniaBody;\r\n /**\r\n * @description Nombre de la alcadia o municipio\r\n */\r\n alcaldiaMunicipio?: string;\r\n /**\r\n * @description Estado de ubicacion\r\n */\r\n estado?: string;\r\n /**\r\n * @description Telefono particular del cliente\r\n */\r\n telefonoParticular?: string;\r\n /**\r\n * @description Telefono celular\r\n */\r\n telefonoCelular?: string;\r\n contrato: ContratoBody;\r\n }\r\n\r\n /**\r\n * @description Clase Auxulizar para tener menus de material de apoyo\r\n */\r\n export interface MaterialApoyo {\r\n /**\r\n * @description Icono ubicado en carpeta public de vue\r\n */\r\n icon?: string;\r\n /**\r\n * @description Nombre del Menu\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Ruta del Index.ts de vue\r\n */\r\n path?: string;\r\n }\r\n\r\n /**\r\n * @description Clase de tabla de figura auxiliar Cotitulat GH OS\r\n */\r\n export interface ObligadoSolidario {\r\n /**\r\n * @description Identitifcador AES\r\n */\r\n estudioSocioeconomicoId?: string;\r\n /**\r\n * @description Identificador de Cliente\r\n */\r\n clienteId: number;\r\n /**\r\n * @description Nombre de la figura\r\n */\r\n nombre?: string;\r\n /**\r\n * @description apellido paterno la figura\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description apellido materno figura\r\n */\r\n apellidoMeterno?: string;\r\n /**\r\n * @description parenteco con el cliente\r\n */\r\n parentezco?: string;\r\n /**\r\n * @description fecha de nacimiento de figura\r\n */\r\n fechaNacimiento?: string;\r\n /**\r\n * @description identificador de nacionaidad figura\r\n */\r\n paisNacionalidadId?: number;\r\n /**\r\n * @description estado de la figura\r\n */\r\n estadoNacimiento?: string;\r\n /**\r\n * @description municipio de la figura\r\n */\r\n municipioAlcaldia?: string;\r\n estadoCivil?: Core.Models.EstadoCivil;\r\n regimenMatrimonial?: Core.Models.RegimenMatrimonial;\r\n /**\r\n * @description RFC de la figura\r\n */\r\n rfc?: string;\r\n /**\r\n * @description calle de la figura\r\n */\r\n calle?: string;\r\n /**\r\n * @description numero de la calle de la figura\r\n */\r\n numExt?: string;\r\n /**\r\n * @description coonia de donde vive la figura\r\n */\r\n colonia?: string;\r\n /**\r\n * @description estado de domicilio\r\n */\r\n estadoDomicilio?: string;\r\n /**\r\n * @description municipio o alcaldia de la figura\r\n */\r\n municipioAlcaldiaDocumento?: string;\r\n /**\r\n * @description Ciudad de la figura\r\n */\r\n ciudad?: string;\r\n /**\r\n * @description codigo postal\r\n */\r\n cp?: string;\r\n /**\r\n * @description telefono de contacto de la figura\r\n */\r\n telParticular?: string;\r\n /**\r\n * @description telefono de contacto de la figura\r\n */\r\n telCelular?: string;\r\n /**\r\n * @description correo particular figura\r\n */\r\n correoElectronico?: string;\r\n /**\r\n * @description dependientes economico\r\n */\r\n numDependientesEconomicos: number;\r\n /**\r\n * @description tipo de vivienda\r\n */\r\n vivienda?: number;\r\n /**\r\n * @description arrendador\r\n */\r\n nombreArrendador?: string;\r\n /**\r\n * @description medios de contactos\r\n */\r\n telFijoArrendador?: string;\r\n /**\r\n * @description medios de contactos\r\n */\r\n telCelArrendador?: string;\r\n /**\r\n * @description aque se dedica el arrendador\r\n */\r\n ocupacionActual?: string;\r\n /**\r\n * @description aque se dedica el arrendador\r\n */\r\n otraOcupacion?: string;\r\n /**\r\n * @description nombre de la empresa\r\n */\r\n nombreEmpresa?: string;\r\n /**\r\n * @description actividad de la empresa\r\n */\r\n actividadEmpresa?: string;\r\n /**\r\n * @description medio de contacto de la emprea\r\n */\r\n telEmpresa?: string;\r\n /**\r\n * @description medio de contacto de la emprea\r\n */\r\n numExtEmpresa: number;\r\n /**\r\n * @description medio de contacto de la emprea\r\n */\r\n correoEmpresa?: string;\r\n /**\r\n * @description puesto que desempeña el arrendador\r\n */\r\n puesto?: string;\r\n /**\r\n * @description nombre del jefe directo\r\n */\r\n nombreJefeDirecto?: string;\r\n /**\r\n * @description su profecion\r\n */\r\n profesion?: number;\r\n /**\r\n * @description años en mes de antiguedad\r\n */\r\n antiguedadAnios: number;\r\n /**\r\n * @description años en mes de antiguedad\r\n */\r\n antiguedadMeses: number;\r\n /**\r\n * @description otros gastos\r\n */\r\n otrosEgresos?: number;\r\n /**\r\n * @description gasto familiar\r\n */\r\n gastoFamiliar?: number;\r\n /**\r\n * @description gasto en colegiaturas\r\n */\r\n colegiaturas?: number;\r\n /**\r\n * @description gasto en renta\r\n */\r\n renta?: number;\r\n /**\r\n * @description gasto en tarjetas\r\n */\r\n tarjetaCredito?: number;\r\n /**\r\n * @description pago de creditos\r\n */\r\n pagoMensualCreditos?: number;\r\n /**\r\n * @description valor de bienes\r\n */\r\n valorAproximadoAutomoviles?: number;\r\n /**\r\n * @description cantidad de autos\r\n */\r\n cantidadAutomoviles?: number;\r\n /**\r\n * @description relacion con el patrimonio\r\n */\r\n relacionPatrimonialAutomoviles?: string;\r\n /**\r\n * @description valor de inmubelres\r\n */\r\n valorAproximadoInmueble?: number;\r\n /**\r\n * @description relacion con el patrimonio\r\n */\r\n cantidadInmueble?: number;\r\n /**\r\n * @description Cargo Mensual Creditos\r\n */\r\n cagoMensualCreditos?: number;\r\n /**\r\n * @description Total de ingresos comprobables\r\n */\r\n totalIngresosComprobabes?: number;\r\n /**\r\n * @description Total de comisiones\r\n */\r\n comisiones?: number;\r\n /**\r\n * @description total de ingreso de rentas\r\n */\r\n rentas?: number;\r\n /**\r\n * @description total de ingresos de gratificaciones\r\n */\r\n gratificaciones?: number;\r\n /**\r\n * @description total de pago de isr o imss\r\n */\r\n isrImss?: number;\r\n /**\r\n * @description Sueldo nomial bruto\r\n */\r\n sueldoNominalBruto?: number;\r\n /**\r\n * @description Inreso del Conyuge\r\n */\r\n ingresosConyuge?: number;\r\n /**\r\n * @description otros ingresos\r\n */\r\n otrosIngresos?: number;\r\n /**\r\n * @description puede comprobar igresos\r\n */\r\n puedeComprarIngresos: boolean;\r\n /**\r\n * @description relacion con inmueble\r\n */\r\n relacionInmueble?: string;\r\n /**\r\n * @description gravado en inmueble\r\n */\r\n gravadoInmueble: boolean;\r\n /**\r\n * @description grabado en automoviles\r\n */\r\n gravadoAutomoviles: boolean;\r\n /**\r\n * @description codigo postal\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description dentificador de colonia\r\n */\r\n coloniaId: number;\r\n /**\r\n * @description identificador de Colonia figuras\r\n */\r\n coloniaIdOS: number;\r\n /**\r\n * @description notificar asesor a HIR-CORE\r\n */\r\n notificacionAscesor: boolean;\r\n /**\r\n * @description JSON Ingresos\r\n */\r\n ingresos?: string;\r\n /**\r\n * @description Suledo Nominal Neto\r\n */\r\n sueldoNominalNeto?: number;\r\n }\r\n\r\n /**\r\n * @description Cuerpo para las Colinia\r\n */\r\n export interface ObtenerColoniasBody {\r\n /**\r\n * @description Identificador de la colinia\r\n */\r\n coloniaId: number;\r\n /**\r\n * @description nombre de la colonia\r\n */\r\n colonia?: string;\r\n /**\r\n * @description Codigo postal\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description ciudad\r\n */\r\n ciudad?: string;\r\n /**\r\n * @description estado\r\n */\r\n estado?: string;\r\n /**\r\n * @description pais\r\n */\r\n pais?: string;\r\n }\r\n\r\n export enum ObtenerMaterialApoyo {\r\n SOLO_TITULOS = \"SOLO_TITULOS\",\r\n SOLO_TEXTO_SUBTITULOS = \"SOLO_TEXTO_SUBTITULOS\",\r\n TODOS = \"TODOS\"\r\n }\r\n\r\n export interface OnboardingIncodeBody {\r\n curpValidationRetries: number;\r\n env?: string;\r\n flowType?: string;\r\n idCaptureRetries: number;\r\n idCaptureTimeout: number;\r\n interviewCode?: string;\r\n interviewId?: string;\r\n selfieCaptureRetries: number;\r\n selfieCaptureTimeout: number;\r\n token?: string;\r\n finishStatus?: string;\r\n }\r\n\r\n /**\r\n * @description Clase para Procentaje y Prima Mensual\r\n */\r\n export interface PrimaMensual {\r\n /**\r\n * @description Porcentaje de la Prima\r\n */\r\n porcentajePrima: number;\r\n /**\r\n * @description Valor de la Prima Mensual\r\n */\r\n valorPrima: number;\r\n }\r\n\r\n /**\r\n * @description Clase para vista de proceso escrituracion\r\n */\r\n export interface ProgresoEscrituracion {\r\n /**\r\n * @description nombre completo del cliente\r\n */\r\n nombreCompletoCliente?: string;\r\n /**\r\n * @description identificador del estudio socioeconomico\r\n */\r\n estudioSocioeconomicoId: number;\r\n /**\r\n * @description proeso de linea vida\r\n */\r\n progreso: number;\r\n /**\r\n * @description Se peude editar el AES\r\n */\r\n estudioSocioeconomicoBloqueado: boolean;\r\n /**\r\n * @description consulta de Buro e Credito productivo\r\n */\r\n autorizacionConsultaBuroCredito: boolean;\r\n /**\r\n * @description Documetnos necesarios del cliente\r\n */\r\n documentos?: Core.Models.EstudioSocioeconomicoDocumento[];\r\n /**\r\n * @description documentos necesarios de conyuge\r\n */\r\n documentosConyuge?: Core.Models.EstudioSocioeconomicoDocumento[];\r\n /**\r\n * @description documentos necesarios Vendedor\r\n */\r\n documentosVendedor?: Core.Models.EstudioSocioeconomicoDocumento[];\r\n /**\r\n * @description documentos necesarios GH\r\n */\r\n documentosGaranteHipotecario?: Core.Models.EstudioSocioeconomicoDocumento[];\r\n documentosObligadoSolidario: Core.Models.EstudioSocioeconomicoDocumento[][];\r\n documentosCotitular: Core.Models.EstudioSocioeconomicoDocumento[][];\r\n /**\r\n * @description documentos necesarios Vendedor Conyuge vendedor\r\n */\r\n documentosConyugeVendedor?: Core.Models.EstudioSocioeconomicoDocumento[];\r\n llavesObligadoSolidario: string[];\r\n llavesCotitular: string[];\r\n llavesGaranteHipotecario: string[];\r\n }\r\n\r\n /**\r\n * @description Clase para la linea de vida del Seguro\r\n */\r\n export interface ProgresoSeguroVida {\r\n /**\r\n * @description Etapa de Seguro de Vida\r\n */\r\n etapas?: EtapaSeguroVida[];\r\n /**\r\n * @description Progreso del Seguro de Vida\r\n */\r\n progreso: number;\r\n }\r\n\r\n export interface RespuestaFuenteIngreso {\r\n /**\r\n * @description Identificador de estudio socioeconómico encriptado\r\n */\r\n estudioSocioeconomicoId?: string;\r\n tipoFuenteIngreso: Core.Enums.TipoFuenteIngreso;\r\n actividadEconomica?: Core.Enums.ActividadEconomica;\r\n /**\r\n * @description Nombre de la empresa en la que trabaja\r\n */\r\n nombreEmpresa?: string;\r\n /**\r\n * @description Identificador del giro de la empresa\r\n */\r\n giroEmpresa?: number;\r\n /**\r\n * @description Teléfono de contacto del trabajo del cliente\r\n */\r\n telefono?: string;\r\n /**\r\n * @description Extenció de nuemro telefonico del la empresa / trabajo\r\n */\r\n extension?: string;\r\n /**\r\n * @description Email de la empresa / trabajo\r\n */\r\n email?: string;\r\n /**\r\n * @description Puesto que desempeña\r\n */\r\n puesto?: string;\r\n /**\r\n * @description Antigüedad en meses de la fuente de ingresos\r\n */\r\n antiguedad?: number;\r\n /**\r\n * @description Nombre del Jefe directo\r\n */\r\n nombreJefe?: string;\r\n /**\r\n * @description Número teléfonico del cliente\r\n */\r\n telefonoJefe?: string;\r\n /**\r\n * @description Ingreso bruto\r\n */\r\n ingresoBruto?: number;\r\n /**\r\n * @description Impusetos\r\n */\r\n impuestos?: number;\r\n /**\r\n * @description Calle de la fuente de ingreso\r\n */\r\n calle?: string;\r\n /**\r\n * @description Número Exterior de la fuente de ingreso\r\n */\r\n noExterior?: string;\r\n /**\r\n * @description Número interior de la funete de ingreso\r\n */\r\n noInterior?: string;\r\n /**\r\n * @description Código Postal de la fuente de ingreso\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description Identificador de la colonia de la fuente de ingreso\r\n */\r\n coloniaId?: number;\r\n /**\r\n * @description Municipio o Alcaldia de la fuente de ingreso\r\n */\r\n municipioAlcaldia?: string;\r\n /**\r\n * @description Booleano para saber si es socio de la fuente de ingreso\r\n */\r\n esSocio?: boolean;\r\n /**\r\n * @description Descripción de la funete de ingresos\r\n */\r\n descripcion?: string;\r\n /**\r\n * @description Segunda descripción de la fuente de ingresos\r\n */\r\n descripcion2?: string;\r\n tipoPension?: Core.Models.TipoPension;\r\n }\r\n\r\n /**\r\n * @description Modelo de apoyo para presentar las fuentes de ingreso de una figura de apoyo\r\n */\r\n export interface RespuestaIngresoFiguraApoyo {\r\n /**\r\n * @description Estudio socioeconómico encriptado de la figura del apoyo\r\n */\r\n estudioSocioeconomicoId?: string;\r\n /**\r\n * @description Número de la figura de apoyo\r\n */\r\n numero: number;\r\n tipoFuenteIngreso: Core.Enums.TipoFuenteIngreso;\r\n actividadEconomica?: Core.Enums.ActividadEconomica;\r\n /**\r\n * @description Nombre de al empresa del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n nombreEmpresa?: string;\r\n /**\r\n * @description Identificador del giro de la empresa del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n giroEmpresa?: number;\r\n /**\r\n * @description Teléfono del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n telefono?: string;\r\n /**\r\n * @description Extensión del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n extension?: string;\r\n /**\r\n * @description Email del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n email?: string;\r\n /**\r\n * @description Puesto que desempeña del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n puesto?: string;\r\n /**\r\n * @description Antiguedad en meses del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n antiguedad?: number;\r\n /**\r\n * @description Nombre del Jefe directo del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n nombreJefe?: string;\r\n /**\r\n * @description Teléfono de jefe del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n telefonoJefe?: string;\r\n /**\r\n * @description Ingreso bruto del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n ingresoBruto?: number;\r\n /**\r\n * @description Gastos del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n impuestos?: number;\r\n /**\r\n * @description Calle del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n calle?: string;\r\n /**\r\n * @description Número Exterior del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n noExterior?: string;\r\n /**\r\n * @description Némero interior del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n noInterior?: string;\r\n /**\r\n * @description Codigo Postal del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n codigoPostal?: string;\r\n /**\r\n * @description Identificador de colonia del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n coloniaId?: number;\r\n /**\r\n * @description Municipio o AlcaldÃa del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n municipioAlcaldia?: string;\r\n /**\r\n * @description Booleano para saber si es socio del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n esSocio?: boolean;\r\n /**\r\n * @description Descripción del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n descripcion?: string;\r\n /**\r\n * @description Segunda Descripción del tipo de fuente de ingreso de la figura de apoyo\r\n */\r\n descripcion2?: string;\r\n tipoPension?: Core.Models.TipoPension;\r\n }\r\n\r\n /**\r\n * @description Clase para obtener el Número de Contrato Ligado a la Aclaración\r\n */\r\n export interface TablaAclaracion {\r\n aclaracionId: number;\r\n fecha: string;\r\n clienteId: number;\r\n tipoAclaracionId: number;\r\n detalle?: string;\r\n fechaTerminacion?: string;\r\n archivo: boolean;\r\n tipoAclaracion: Core.Models.TipoAclaracion;\r\n /**\r\n * @description Cadena que contiene el Número de Contrato ligado a la aclaración\r\n */\r\n numeroContrato?: string;\r\n }\r\n\r\n export enum TipoFigura {\r\n CoTitular = \"CoTitular\",\r\n ObligadoSolidario = \"ObligadoSolidario\",\r\n GaranteHipotecario = \"GaranteHipotecario\"\r\n }\r\n\r\n export interface ValidarCodigoVerificacionBody {\r\n codigo?: string;\r\n clienteId?: number;\r\n canal: Core.Enums.Canal;\r\n }\r\n\r\n export interface ValidarCodigoVerificacionRecuperacionBody {\r\n codigo?: string;\r\n canal: Core.Enums.Canal;\r\n }\r\n\r\n export class AdjudicacionApi extends BaseAPI {\r\n public ObtenerAdjudicacionesMesUrl = \"/api/Cliente/Cliente/Adjudicacion/ObtenerAdjudicacionesMes\";\r\n\r\n public async ObtenerAdjudicacionesMes(\r\n annio: number,\r\n mes: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.Adjudicaciones[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n Annio: annio,\r\n Mes: mes\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Adjudicacion/ObtenerAdjudicacionesMes\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class AtencionClienteApi extends BaseAPI {\r\n public ListarAclaracionesUrl = \"/api/Cliente/Cliente/AtencionCliente/ListarAclaraciones\";\r\n\r\n public async ListarAclaraciones(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.TipoAclaracion[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/ListarAclaraciones\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarAclaracionUrl = \"/api/Cliente/Cliente/AtencionCliente/GuardarAclaracion\";\r\n\r\n public async GuardarAclaracion(\r\n aclaracion?: Core.Models.Aclaracion,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = aclaracion;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/GuardarAclaracion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarUsuarioAclaracionUrl = \"/api/Cliente/Cliente/AtencionCliente/GuardarUsuarioAclaracion\";\r\n\r\n public async GuardarUsuarioAclaracion(\r\n aclaracionUsuario?: Core.Models.AclaracionUsuario,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = aclaracionUsuario;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/GuardarUsuarioAclaracion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarArchivoUrl = \"/api/Cliente/Cliente/AtencionCliente/GuardarArchivo\";\r\n\r\n public async GuardarArchivo(\r\n archivo: Blob,\r\n ruta: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data = objectToFormData({\r\n archivo: archivo\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/GuardarArchivo\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerArchivoUrl = \"/api/Cliente/Cliente/AtencionCliente/ObtenerArchivo\";\r\n\r\n public async ObtenerArchivo(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/ObtenerArchivo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerAclaracionesUrl = \"/api/Cliente/Cliente/AtencionCliente/ObtenerAclaraciones\";\r\n\r\n public async ObtenerAclaraciones(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<TablaAclaracion[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/ObtenerAclaraciones\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public CrearZipUrl = \"/api/Cliente/Cliente/AtencionCliente/CrearZip\";\r\n\r\n public async CrearZip(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/AtencionCliente/CrearZip\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class CalculadoraApi extends BaseAPI {\r\n public GuardarDatosCalculadoraUrl = \"/api/Cliente/Cliente/Calculadora/GuardarDatosCalculadora\";\r\n\r\n public async GuardarDatosCalculadora(\r\n calculadoraBody?: Models.CalculadoraBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = calculadoraBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Calculadora/GuardarDatosCalculadora\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class ClienteApi extends BaseAPI {\r\n public ObtenerPersonaFisicaUrl = \"/api/Cliente/Cliente/Cliente/ObtenerPersonaFisica\";\r\n\r\n public async ObtenerPersonaFisica(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.PersonaFisica>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Cliente/ObtenerPersonaFisica\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPersonaMoralUrl = \"/api/Cliente/Cliente/Cliente/ObtenerPersonaMoral\";\r\n\r\n public async ObtenerPersonaMoral(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.PersonaMoral>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Cliente/ObtenerPersonaMoral\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class ColoniaApi extends BaseAPI {\r\n public ObtenerColoniaUrl = \"/api/Cliente/Cliente/Colonia/ObtenerColonia\";\r\n\r\n public async ObtenerColonia(\r\n codigoPostal: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<ObtenerColoniasBody[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n codigoPostal: codigoPostal\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Colonia/ObtenerColonia\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class DomiciliacionApi extends BaseAPI {\r\n public InformacionDomiciliacionUrl = \"/api/Cliente/Cliente/Domiciliacion/InformacionDomiciliacion\";\r\n\r\n public async InformacionDomiciliacion(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<BodyDomiciliacion>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/InformacionDomiciliacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerBancosUrl = \"/api/Cliente/Cliente/Domiciliacion/ObtenerBancos\";\r\n\r\n public async ObtenerBancos(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<BodyBanco[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/ObtenerBancos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDatosDomiciliacionUrl = \"/api/Cliente/Cliente/Domiciliacion/GuardarDatosDomiciliacion\";\r\n\r\n public async GuardarDatosDomiciliacion(\r\n bodyDomiciliacion?: BodyDomiciliacion,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = bodyDomiciliacion;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/GuardarDatosDomiciliacion\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public NotificarUsuariosUrl = \"/api/Cliente/Cliente/Domiciliacion/NotificarUsuarios\";\r\n\r\n public async NotificarUsuarios(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/NotificarUsuarios\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDocumentosDomiciliacionUrl = \"/api/Cliente/Cliente/Domiciliacion/GuardarDocumentosDomiciliacion\";\r\n\r\n public async GuardarDocumentosDomiciliacion(\r\n archivo: Blob,\r\n cuentaDomiciliacionId: string,\r\n tipo: Core.Enums.TipoDocumentoDomiciliacion,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n CuentaDomiciliacionId: cuentaDomiciliacionId,\r\n tipo: tipo\r\n };\r\n\r\n const data = objectToFormData({\r\n archivo: archivo\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/GuardarDocumentosDomiciliacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDomiciliacionContratoUrl = \"/api/Cliente/Cliente/Domiciliacion/GuardarDomiciliacionContrato\";\r\n\r\n public async GuardarDomiciliacionContrato(\r\n cuentaDomiciliacionId: string,\r\n informacionFinanciamientoContrato?: Financiamiento.InformacionFinanciamientoContrato,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n CuentaDomiciliacionId: cuentaDomiciliacionId\r\n };\r\n\r\n const data = informacionFinanciamientoContrato;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/GuardarDomiciliacionContrato\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentosDomiciliacionUrl = \"/api/Cliente/Cliente/Domiciliacion/ObtenerDocumentosDomiciliacion\";\r\n\r\n public async ObtenerDocumentosDomiciliacion(\r\n ruta: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/ObtenerDocumentosDomiciliacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDomiciliacionContratosUrl = \"/api/Cliente/Cliente/Domiciliacion/GuardarDomiciliacionContratos\";\r\n\r\n public async GuardarDomiciliacionContratos(\r\n cuentaDomiciliacionId: string,\r\n informacionFinanciamientoContrato?: Financiamiento.InformacionFinanciamientoContrato[],\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n CuentaDomiciliacionId: cuentaDomiciliacionId\r\n };\r\n\r\n const data = informacionFinanciamientoContrato;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/GuardarDomiciliacionContratos\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ListarDomiciliacionesUrl = \"/api/Cliente/Cliente/Domiciliacion/ListarDomiciliaciones\";\r\n\r\n public async ListarDomiciliaciones(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/ListarDomiciliaciones\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarRespuestaIncodeUrl = \"/api/Cliente/Cliente/Domiciliacion/GuardarRespuestaIncode\";\r\n\r\n public async GuardarRespuestaIncode(\r\n onboardingIncodeBody?: OnboardingIncodeBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = onboardingIncodeBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Domiciliacion/GuardarRespuestaIncode\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class EscrituracionApi extends BaseAPI {\r\n public ObtenerEsrituracionSesionUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerEsrituracionSesion\";\r\n\r\n public async ObtenerEsrituracionSesion(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerEsrituracionSesion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDatosClienteUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerDatosCliente\";\r\n\r\n public async ObtenerDatosCliente(\r\n id: string,\r\n desdeFiguraApoyo: boolean = false,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<EstudioSocioeconomico>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id,\r\n desdeFiguraApoyo: desdeFiguraApoyo\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerDatosCliente\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public CifradoUrl = \"/api/Cliente/Cliente/Escrituracion/Cifrado\";\r\n\r\n public async Cifrado(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/Cifrado\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDatosObligadoSolidarioUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerDatosObligadoSolidario\";\r\n\r\n public async ObtenerDatosObligadoSolidario(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<ObligadoSolidario>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerDatosObligadoSolidario\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerProgresoEscrituracionUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerProgresoEscrituracion\";\r\n\r\n public async ObtenerProgresoEscrituracion(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<ProgresoEscrituracion>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerProgresoEscrituracion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerProfesionesUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerProfesiones\";\r\n\r\n public async ObtenerProfesiones(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Core.Models.Profesion[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerProfesiones\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerColoniasUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerColonias\";\r\n\r\n public async ObtenerColonias(\r\n codigoPostal: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<ObtenerColoniasBody[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n codigoPostal: codigoPostal\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerColonias\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarEstudioSocioeconomicoUrl = \"/api/Cliente/Cliente/Escrituracion/GuardarEstudioSocioeconomico\";\r\n\r\n public async GuardarEstudioSocioeconomico(\r\n estudioSocioeconomico: EstudioSocioeconomico,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = estudioSocioeconomico;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/GuardarEstudioSocioeconomico\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarEstudioSocioeconomicoObligadoSolidarioUrl =\r\n \"/api/Cliente/Cliente/Escrituracion/GuardarEstudioSocioeconomicoObligadoSolidario\";\r\n\r\n public async GuardarEstudioSocioeconomicoObligadoSolidario(\r\n obligadoSolidario: ObligadoSolidario,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = obligadoSolidario;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/GuardarEstudioSocioeconomicoObligadoSolidario\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPaisesUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerPaises\";\r\n\r\n public async ObtenerPaises(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Core.Models.Pais[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerPaises\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerArchivoAutorizacionConsultaBuroCreditoUrl =\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerArchivoAutorizacionConsultaBuroCredito\";\r\n\r\n public async ObtenerArchivoAutorizacionConsultaBuroCredito(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerArchivoAutorizacionConsultaBuroCredito\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDocumentoUrl = \"/api/Cliente/Cliente/Escrituracion/GuardarDocumento\";\r\n\r\n public async GuardarDocumento(\r\n archivo: Blob,\r\n documentoTramiteTitulacionId: number,\r\n obligadoSolidarioNumero: number,\r\n token: string,\r\n estudioSocioeconomicoEntidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = objectToFormData({\r\n Archivo: archivo,\r\n DocumentoTramiteTitulacionId: documentoTramiteTitulacionId,\r\n ObligadoSolidarioNumero: obligadoSolidarioNumero,\r\n Token: token,\r\n EstudioSocioeconomicoEntidad: estudioSocioeconomicoEntidad\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/GuardarDocumento\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentoUrl = \"/api/Cliente/Cliente/Escrituracion/ObtenerDocumento\";\r\n\r\n public async ObtenerDocumento(\r\n token: string,\r\n obligadoSolidarioNumero: number,\r\n estudioSocioeconomicoEntidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n documentoTramiteTitulacionId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n token: token,\r\n obligadoSolidarioNumero: obligadoSolidarioNumero,\r\n estudioSocioeconomicoEntidad: estudioSocioeconomicoEntidad,\r\n documentoTramiteTitulacionId: documentoTramiteTitulacionId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Escrituracion/ObtenerDocumento\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class EstadisticaApi extends BaseAPI {\r\n public GuardarEstaditicaAppUrl = \"/api/Cliente/Cliente/Estadistica/GuardarEstaditicaApp\";\r\n\r\n public async GuardarEstaditicaApp(\r\n moduloEstadistica?: Models.Estadisticas.ModuloEstadistica,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = moduloEstadistica;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Estadistica/GuardarEstaditicaApp\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class EstudioSocioeconomicoApi extends BaseAPI {\r\n public ObtenerUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/Obtener\";\r\n\r\n public async Obtener(\r\n operacionTitulacionId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<EstudioSocioeconomicoV2>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n OperacionTitulacionId: operacionTitulacionId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/Obtener\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/Guardar\";\r\n\r\n public async Guardar(\r\n estudioSocioeconomicoV2?: EstudioSocioeconomicoV2,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = estudioSocioeconomicoV2;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/Guardar\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerFigurasApoyoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerFigurasApoyo\";\r\n\r\n public async ObtenerFigurasApoyo(\r\n estudioSocioeconomicoId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<EstudioSocioeconomicoFigurasApoyoV2[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n EstudioSocioeconomicoId: estudioSocioeconomicoId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerFigurasApoyo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarFiguraApoyoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarFiguraApoyo\";\r\n\r\n public async GuardarFiguraApoyo(\r\n estudioSocioeconomicoFigurasApoyoV2?: EstudioSocioeconomicoFigurasApoyoV2,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = estudioSocioeconomicoFigurasApoyoV2;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarFiguraApoyo\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerIngresosUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerIngresos\";\r\n\r\n public async ObtenerIngresos(\r\n estudioSocioeconomicoId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<RespuestaFuenteIngreso[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n EstudioSocioeconomicoId: estudioSocioeconomicoId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerIngresos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarIngresosUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarIngresos\";\r\n\r\n public async GuardarIngresos(\r\n respuestaFuenteIngreso?: RespuestaFuenteIngreso[],\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = respuestaFuenteIngreso;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarIngresos\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerIngresosFiguraApoyoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerIngresosFiguraApoyo\";\r\n\r\n public async ObtenerIngresosFiguraApoyo(\r\n estudioSocioeconomicoId: string,\r\n numero: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<RespuestaIngresoFiguraApoyo[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n EstudioSocioeconomicoId: estudioSocioeconomicoId,\r\n Numero: numero\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerIngresosFiguraApoyo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarIngresosFiguraApoyoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarIngresosFiguraApoyo\";\r\n\r\n public async GuardarIngresosFiguraApoyo(\r\n respuestaIngresoFiguraApoyo?: RespuestaIngresoFiguraApoyo[],\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = respuestaIngresoFiguraApoyo;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarIngresosFiguraApoyo\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentosUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumentos\";\r\n\r\n public async ObtenerDocumentos(\r\n estudioSocioeconomicoId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Perfil.DocumentoTramiteTitulacionEntidad[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n EstudioSocioeconomicoId: estudioSocioeconomicoId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumentos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentosFiguraUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumentosFigura\";\r\n\r\n public async ObtenerDocumentosFigura(\r\n estudioSocioeconomicoId: string,\r\n numero: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Perfil.DocumentoTramiteTitulacionEntidad[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n EstudioSocioeconomicoId: estudioSocioeconomicoId,\r\n numero: numero\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumentosFigura\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDocumentoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarDocumento\";\r\n\r\n public async GuardarDocumento(\r\n archivo: Blob,\r\n documentoTramiteTitulacionId: number,\r\n obligadoSolidarioNumero: number,\r\n token: string,\r\n categoria: string,\r\n estudioSocioeconomicoEntidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = objectToFormData({\r\n Archivo: archivo,\r\n DocumentoTramiteTitulacionId: documentoTramiteTitulacionId,\r\n ObligadoSolidarioNumero: obligadoSolidarioNumero,\r\n Token: token,\r\n Categoria: categoria,\r\n EstudioSocioeconomicoEntidad: estudioSocioeconomicoEntidad\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/GuardarDocumento\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumento\";\r\n\r\n public async ObtenerDocumento(\r\n token: string,\r\n obligadoSolidarioNumero: number,\r\n estudioSocioeconomicoEntidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n documentoTramiteTitulacionId: number,\r\n categoria: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n token: token,\r\n obligadoSolidarioNumero: obligadoSolidarioNumero,\r\n estudioSocioeconomicoEntidad: estudioSocioeconomicoEntidad,\r\n documentoTramiteTitulacionId: documentoTramiteTitulacionId,\r\n categoria: categoria\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/ObtenerDocumento\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EliminarDocumentoUrl = \"/api/Cliente/Cliente/EstudioSocioeconomico/EliminarDocumento\";\r\n\r\n public async EliminarDocumento(\r\n estudioSocioEconomicoId: string,\r\n figura: number,\r\n entidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n documentoTramiteTitulacionId: string,\r\n categoria: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n estudioSocioEconomicoId: estudioSocioEconomicoId,\r\n figura: figura,\r\n entidad: entidad,\r\n documentoTramiteTitulacionId: documentoTramiteTitulacionId,\r\n categoria: categoria\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/EstudioSocioeconomico/EliminarDocumento\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class FacturacionApi extends BaseAPI {\r\n public ObtenerDatosFacturacionUrl = \"/api/Cliente/Cliente/Facturacion/ObtenerDatosFacturacion\";\r\n\r\n public async ObtenerDatosFacturacion(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<FacturacionBody>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Facturacion/ObtenerDatosFacturacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDatosFacturacionUrl = \"/api/Cliente/Cliente/Facturacion/GuardarDatosFacturacion\";\r\n\r\n public async GuardarDatosFacturacion(\r\n facturacionBody: FacturacionBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = facturacionBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Facturacion/GuardarDatosFacturacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPDFFacturacionUrl = \"/api/Cliente/Cliente/Facturacion/ObtenerPDFFacturacion\";\r\n\r\n public async ObtenerPDFFacturacion(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Facturacion/ObtenerPDFFacturacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDocumentoFacturacionUrl = \"/api/Cliente/Cliente/Facturacion/GuardarDocumentoFacturacion\";\r\n\r\n public async GuardarDocumentoFacturacion(\r\n archivo: Blob,\r\n tipo: Core.Enums.TipoDocumentoDomiciliacion,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tipo: tipo\r\n };\r\n\r\n const data = objectToFormData({\r\n archivo: archivo\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Facturacion/GuardarDocumentoFacturacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public NotificarUsuariosUrl = \"/api/Cliente/Cliente/Facturacion/NotificarUsuarios\";\r\n\r\n public async NotificarUsuarios(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Facturacion/NotificarUsuarios\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class FinanciamientoApi extends BaseAPI {\r\n public ObtenerInformacionUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerInformacion\";\r\n\r\n public async ObtenerInformacion(\r\n aplicacion: Models.AplicacionMotorPagos,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.InformacionFinanciamiento>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n aplicacion: aplicacion\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerInformacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerContratosUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerContratos\";\r\n\r\n public async ObtenerContratos(\r\n aplicacion: Models.AplicacionMotorPagos,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.InformacionFinanciamientoContrato[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n aplicacion: aplicacion\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerContratos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPdfManualConsumidorUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerPdfManualConsumidor\";\r\n\r\n public async ObtenerPdfManualConsumidor(\r\n contratoId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n contratoId: contratoId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerPdfManualConsumidor\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDescuentoUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuento\";\r\n\r\n public async ObtenerDescuento(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<DescuentosApoyo[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuento\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDescuentosUltimoMesUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuentosUltimoMes\";\r\n\r\n public async ObtenerDescuentosUltimoMes(\r\n contratoId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n contratoId: contratoId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuentosUltimoMes\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDescuentosUltimoMesTodosContratosUrl =\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuentosUltimoMesTodosContratos\";\r\n\r\n public async ObtenerDescuentosUltimoMesTodosContratos(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerDescuentosUltimoMesTodosContratos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActualizarAliasGarantiaUrl = \"/api/Cliente/Cliente/Financiamiento/ActualizarAliasGarantia\";\r\n\r\n public async ActualizarAliasGarantia(\r\n garantiaId: number,\r\n alias: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n GarantiaId: garantiaId,\r\n Alias: alias\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ActualizarAliasGarantia\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerHistoricoPagosUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerHistoricoPagos\";\r\n\r\n public async ObtenerHistoricoPagos(\r\n aplicacion: Models.AplicacionMotorPagos,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n aplicacion: aplicacion\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerHistoricoPagos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerUltimosPagosUrl = \"/api/Cliente/Cliente/Financiamiento/ObtenerUltimosPagos\";\r\n\r\n public async ObtenerUltimosPagos(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.RespuestaUltimosPagos>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Financiamiento/ObtenerUltimosPagos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class GiroIngresoApi extends BaseAPI {\r\n public ObtenerUrl = \"/api/Cliente/Cliente/GiroIngreso/Obtener\";\r\n\r\n public async Obtener(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Perfil.GiroIngresoRespuesta[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/GiroIngreso/Obtener\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class HomeApi extends BaseAPI {\r\n public ObtenerInformacionUrl = \"/api/Cliente/Cliente/Home/ObtenerInformacion\";\r\n\r\n public async ObtenerInformacion(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.InformacionCliente>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerInformacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActualizarInformacionClienteUrl = \"/api/Cliente/Cliente/Home/ActualizarInformacionCliente\";\r\n\r\n public async ActualizarInformacionCliente(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ActualizarInformacionCliente\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public RegistrarUsuarioUrl = \"/api/Cliente/Cliente/Home/RegistrarUsuario\";\r\n\r\n public async RegistrarUsuario(\r\n registrarUsuarioBody?: Home.RegistrarUsuarioBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Home.RespuestaRegistrarUsuario>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = registrarUsuarioBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/RegistrarUsuario\",\r\n \"PUT\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public LoginUrl = \"/api/Cliente/Cliente/Home/Login\";\r\n\r\n public async Login(\r\n loginBody: Home.LoginBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Home.RespuestaLogin>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = loginBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/Login\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public LogoutUrl = \"/api/Cliente/Cliente/Home/Logout\";\r\n\r\n public async Logout(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/Logout\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public SolicitudCambioContraseniaUrl = \"/api/Cliente/Cliente/Home/SolicitudCambioContrasenia\";\r\n\r\n public async SolicitudCambioContrasenia(\r\n altaUsuario?: Core.Models.AltaUsuario,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = altaUsuario;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/SolicitudCambioContrasenia\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActualizarContraseniaUrl = \"/api/Cliente/Cliente/Home/ActualizarContrasenia\";\r\n\r\n public async ActualizarContrasenia(\r\n token: string,\r\n actualizarAltaCliente?: ActualizarAltaCliente,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n token: token\r\n };\r\n\r\n const data = actualizarAltaCliente;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ActualizarContrasenia\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public PingUrl = \"/api/Cliente/Cliente/Home/Ping\";\r\n\r\n public async Ping(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Home.RespuestaPing>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/Ping\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerInformacionHomeUrl = \"/api/Cliente/Cliente/Home/ObtenerInformacionHome\";\r\n\r\n public async ObtenerInformacionHome(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Home.InformacionHome>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerInformacionHome\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerAdeudoVencidosUrl = \"/api/Cliente/Cliente/Home/ObtenerAdeudoVencidos\";\r\n\r\n public async ObtenerAdeudoVencidos(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerAdeudoVencidos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerMediosContactoUrl = \"/api/Cliente/Cliente/Home/ObtenerMediosContacto\";\r\n\r\n public async ObtenerMediosContacto(\r\n correo: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n correo: correo\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerMediosContacto\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public AceptarTerminosCondicionesAvisoPrivacidadUrl =\r\n \"/api/Cliente/Cliente/Home/AceptarTerminosCondicionesAvisoPrivacidad\";\r\n\r\n public async AceptarTerminosCondicionesAvisoPrivacidad(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/AceptarTerminosCondicionesAvisoPrivacidad\",\r\n \"PATCH\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EnviarCodigoVerificacionEmailUrl = \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionEmail\";\r\n\r\n public async EnviarCodigoVerificacionEmail(\r\n enviarCodigoVerificacionMailBody?: EnviarCodigoVerificacionMailBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = enviarCodigoVerificacionMailBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionEmail\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EnviarCodigoVerificacionPuntoContactoUrl =\r\n \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionPuntoContacto\";\r\n\r\n public async EnviarCodigoVerificacionPuntoContacto(\r\n enviarCodigoVerificacionPuntoContactoBody?: EnviarCodigoVerificacionPuntoContactoBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = enviarCodigoVerificacionPuntoContactoBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionPuntoContacto\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EnviarCodigoVerificacionSmsUrl = \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionSms\";\r\n\r\n public async EnviarCodigoVerificacionSms(\r\n enviarCodigoVerificacionSmsBody?: EnviarCodigoVerificacionSmsBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = enviarCodigoVerificacionSmsBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/EnviarCodigoVerificacionSms\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ValidarCodigoVerificacionUrl = \"/api/Cliente/Cliente/Home/ValidarCodigoVerificacion\";\r\n\r\n public async ValidarCodigoVerificacion(\r\n validarCodigoVerificacionBody?: ValidarCodigoVerificacionBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = validarCodigoVerificacionBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ValidarCodigoVerificacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ValidarCodigoVerificacionRecuperacionUrl =\r\n \"/api/Cliente/Cliente/Home/ValidarCodigoVerificacionRecuperacion\";\r\n\r\n public async ValidarCodigoVerificacionRecuperacion(\r\n validarCodigoVerificacionRecuperacionBody?: ValidarCodigoVerificacionRecuperacionBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = validarCodigoVerificacionRecuperacionBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ValidarCodigoVerificacionRecuperacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GenerarPINUrl = \"/api/Cliente/Cliente/Home/GenerarPIN\";\r\n\r\n public async GenerarPIN(\r\n generarPINBody?: Home.GenerarPINBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = generarPINBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/GenerarPIN\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ValidarPINUrl = \"/api/Cliente/Cliente/Home/ValidarPIN\";\r\n\r\n public async ValidarPIN(\r\n valor: string,\r\n medioContacto: number,\r\n code: string,\r\n canal: Core.Enums.Canal,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n valor: valor,\r\n medioContacto: medioContacto,\r\n code: code,\r\n canal: canal\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ValidarPIN\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public CambiarContraseniaTokenUrl = \"/api/Cliente/Cliente/Home/CambiarContraseniaToken\";\r\n\r\n public async CambiarContraseniaToken(\r\n canal: Core.Enums.Canal,\r\n cambiarContraseniaTokenBody?: Home.CambiarContraseniaTokenBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n canal: canal\r\n };\r\n\r\n const data = cambiarContraseniaTokenBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/CambiarContraseniaToken\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarIdentificacionUrl = \"/api/Cliente/Cliente/Home/GuardarIdentificacion\";\r\n\r\n public async GuardarIdentificacion(\r\n identificacion: Blob,\r\n flag: boolean,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n flag: flag\r\n };\r\n\r\n const data = objectToFormData({\r\n identificacion: identificacion\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/GuardarIdentificacion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActualizarDatosClienteUrl = \"/api/Cliente/Cliente/Home/ActualizarDatosCliente\";\r\n\r\n public async ActualizarDatosCliente(\r\n telParticular: string,\r\n celParticular: string,\r\n correoPersonal: string,\r\n calle: string,\r\n numero: string,\r\n codigoPostal: string,\r\n ladaPais: number,\r\n coloniaId: number,\r\n canal: Core.Enums.Canal,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n TelParticular: telParticular,\r\n CelParticular: celParticular,\r\n correoPersonal: correoPersonal,\r\n calle: calle,\r\n Numero: numero,\r\n CodigoPostal: codigoPostal,\r\n LadaPais: ladaPais,\r\n ColoniaId: coloniaId,\r\n canal: canal\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ActualizarDatosCliente\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerZipUrl = \"/api/Cliente/Cliente/Home/ObtenerZip\";\r\n\r\n public async ObtenerZip(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerZip\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public VerDocumentoUrl = \"/api/Cliente/Cliente/Home/VerDocumento\";\r\n\r\n public async VerDocumento(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/VerDocumento\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ListarPaisesUrl = \"/api/Cliente/Cliente/Home/ListarPaises\";\r\n\r\n public async ListarPaises(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Core.Models.Pais[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ListarPaises\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerArchivoPublicoUrl = \"/api/Cliente/Cliente/Home/ObtenerArchivoPublico\";\r\n\r\n public async ObtenerArchivoPublico(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerArchivoPublico\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActualizarBeneficiarioUrl = \"/api/Cliente/Cliente/Home/ActualizarBeneficiario\";\r\n\r\n public async ActualizarBeneficiario(\r\n beneficiarioDetalle?: BeneficiarioDetalle[],\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = beneficiarioDetalle;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ActualizarBeneficiario\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EliminarBeneficiarioUrl = \"/api/Cliente/Cliente/Home/EliminarBeneficiario\";\r\n\r\n public async EliminarBeneficiario(\r\n beneficiarioId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n beneficiarioId: beneficiarioId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/EliminarBeneficiario\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public AvisoPoliticasUrl = \"/api/Cliente/Cliente/Home/AvisoPoliticas\";\r\n\r\n public async AvisoPoliticas(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/AvisoPoliticas\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public AvisoPrivacidadUrl = \"/api/Cliente/Cliente/Home/AvisoPrivacidad\";\r\n\r\n public async AvisoPrivacidad(\r\n tipo: Enums.Aplicacion,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tipo: tipo\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/AvisoPrivacidad\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerImagenUrl = \"/api/Cliente/Cliente/Home/ObtenerImagen\";\r\n\r\n public async ObtenerImagen(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ObtenerImagen\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarImagenUrl = \"/api/Cliente/Cliente/Home/GuardarImagen\";\r\n\r\n public async GuardarImagen(imagen: Blob, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = objectToFormData({\r\n imagen: imagen\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/GuardarImagen\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ListarMaterialApoyoUrl = \"/api/Cliente/Cliente/Home/ListarMaterialApoyo\";\r\n\r\n public async ListarMaterialApoyo(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<MaterialApoyo[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/ListarMaterialApoyo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarSuscripcionClienteUrl = \"/api/Cliente/Cliente/Home/GuardarSuscripcionCliente\";\r\n\r\n public async GuardarSuscripcionCliente(\r\n token: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n token: token\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/GuardarSuscripcionCliente\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public RealizarNotificacionesUrl = \"/api/Cliente/Cliente/Home/RealizarNotificaciones\";\r\n\r\n public async RealizarNotificaciones(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Home/RealizarNotificaciones\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class MaterialApoyoApi extends BaseAPI {\r\n public ObtenerMaterialApoyoUrl = \"/api/Cliente/Cliente/MaterialApoyo/ObtenerMaterialApoyo\";\r\n\r\n public async ObtenerMaterialApoyo(\r\n tipo: ObtenerMaterialApoyo,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.MaterialApoyo[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tipo: tipo\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/MaterialApoyo/ObtenerMaterialApoyo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public BuscarMaterialApoyoUrl = \"/api/Cliente/Cliente/MaterialApoyo/BuscarMaterialApoyo\";\r\n\r\n public async BuscarMaterialApoyo(\r\n cadena: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.MaterialApoyo[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n Cadena: cadena\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/MaterialApoyo/BuscarMaterialApoyo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class OperacionTitulacionApi extends BaseAPI {\r\n public ObtenerNombreAsesorTitulacionUrl =\r\n \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerNombreAsesorTitulacion\";\r\n\r\n public async ObtenerNombreAsesorTitulacion(\r\n operacionTitulacionId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n operacionTitulacionId: operacionTitulacionId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerNombreAsesorTitulacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerOperacionesActivasUrl = \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerOperacionesActivas\";\r\n\r\n public async ObtenerOperacionesActivas(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Perfil.OperacionTitulacionRespuesta[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerOperacionesActivas\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerEtapaOperacionTitulacionUrl =\r\n \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerEtapaOperacionTitulacion\";\r\n\r\n public async ObtenerEtapaOperacionTitulacion(\r\n operacionTitulacionId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Perfil.OperacionTitulacionRespuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n operacionTitulacionId: operacionTitulacionId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/OperacionTitulacion/ObtenerEtapaOperacionTitulacion\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class PagoApi extends BaseAPI {\r\n public CrearCodiUrl = \"/api/Cliente/Cliente/Pago/CrearCodi\";\r\n\r\n public async CrearCodi(\r\n telefono: string,\r\n monto: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n telefono: telefono,\r\n monto: monto\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Pago/CrearCodi\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPosibilidadPagoUrl = \"/api/Cliente/Cliente/Pago/ObtenerPosibilidadPago\";\r\n\r\n public async ObtenerPosibilidadPago(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Pago/ObtenerPosibilidadPago\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public TienePagoPendientePorAplicarUrl = \"/api/Cliente/Cliente/Pago/TienePagoPendientePorAplicar\";\r\n\r\n public async TienePagoPendientePorAplicar(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Pago/TienePagoPendientePorAplicar\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class ProfesionApi extends BaseAPI {\r\n public ObtenerProfesionesUrl = \"/api/Cliente/Cliente/Profesion/ObtenerProfesiones\";\r\n\r\n public async ObtenerProfesiones(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Core.Models.Profesion[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Profesion/ObtenerProfesiones\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class ProgramaReciclaApi extends BaseAPI {\r\n public ObtenerClienteProgramaReciclaUrl = \"/api/Cliente/Cliente/ProgramaRecicla/ObtenerClienteProgramaRecicla\";\r\n\r\n public async ObtenerClienteProgramaRecicla(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/ProgramaRecicla/ObtenerClienteProgramaRecicla\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ActivarProgramaReciclaUrl = \"/api/Cliente/Cliente/ProgramaRecicla/ActivarProgramaRecicla\";\r\n\r\n public async ActivarProgramaRecicla(\r\n programaRecicla: boolean,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ProgramaRecicla: programaRecicla\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/ProgramaRecicla/ActivarProgramaRecicla\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public LoginConSesionUrl = \"/api/Cliente/Cliente/ProgramaRecicla/LoginConSesion\";\r\n\r\n public async LoginConSesion(password: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n password: password\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/ProgramaRecicla/LoginConSesion\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class RegimenFiscalApi extends BaseAPI {\r\n public ObtenerUrl = \"/api/Cliente/Cliente/RegimenFiscal/Obtener\";\r\n\r\n public async Obtener(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Core.Models.RegimenFiscal[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/RegimenFiscal/Obtener\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class SeguroApi extends BaseAPI {\r\n public GuardarArchivoUrl = \"/api/Cliente/Cliente/Seguro/GuardarArchivo\";\r\n\r\n public async GuardarArchivo(\r\n archivo: Blob,\r\n ruta: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<string>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data = objectToFormData({\r\n archivo: archivo\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/GuardarArchivo\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public BorrarArchivoUrl = \"/api/Cliente/Cliente/Seguro/BorrarArchivo\";\r\n\r\n public async BorrarArchivo(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<boolean>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/BorrarArchivo\",\r\n \"DELETE\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerArchivoUrl = \"/api/Cliente/Cliente/Seguro/ObtenerArchivo\";\r\n\r\n public async ObtenerArchivo(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerArchivo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerPagoPrimaUrl = \"/api/Cliente/Cliente/Seguro/ObtenerPagoPrima\";\r\n\r\n public async ObtenerPagoPrima(\r\n tramiteSeguroId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<PrimaMensual>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n TramiteSeguroId: tramiteSeguroId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerPagoPrima\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerLineaVidaSeguroUrl = \"/api/Cliente/Cliente/Seguro/ObtenerLineaVidaSeguro\";\r\n\r\n public async ObtenerLineaVidaSeguro(\r\n tramiteSeguroId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<ProgresoSeguroVida>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n TramiteSeguroId: tramiteSeguroId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerLineaVidaSeguro\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerBeneficiarioDetalleUrl = \"/api/Cliente/Cliente/Seguro/ObtenerBeneficiarioDetalle\";\r\n\r\n public async ObtenerBeneficiarioDetalle(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerBeneficiarioDetalle\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerTramiteSeguroUrl = \"/api/Cliente/Cliente/Seguro/ObtenerTramiteSeguro\";\r\n\r\n public async ObtenerTramiteSeguro(\r\n cotitularID: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Seguro.TramiteSeguro[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n CotitularID: cotitularID\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerTramiteSeguro\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerCotitularesUrl = \"/api/Cliente/Cliente/Seguro/ObtenerCotitulares\";\r\n\r\n public async ObtenerCotitulares(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.PersonaFisica[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerCotitulares\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerConsentimientoMedicoUrl = \"/api/Cliente/Cliente/Seguro/ObtenerConsentimientoMedico\";\r\n\r\n public async ObtenerConsentimientoMedico(opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerConsentimientoMedico\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentoUrl = \"/api/Cliente/Cliente/Seguro/ObtenerDocumento\";\r\n\r\n public async ObtenerDocumento(\r\n personaFisicaId: string,\r\n tipoDocumento: Core.Models.TipoDocumentoTramiteSeguro,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n personaFisicaId: personaFisicaId,\r\n tipoDocumento: tipoDocumento\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerDocumento\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerListaDocumentosUrl = \"/api/Cliente/Cliente/Seguro/ObtenerListaDocumentos\";\r\n\r\n public async ObtenerListaDocumentos(\r\n tramiteSeguroId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Seguro.DocumentoSeguro[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tramiteSeguroId: tramiteSeguroId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerListaDocumentos\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentoAnexoUrl = \"/api/Cliente/Cliente/Seguro/ObtenerDocumentoAnexo\";\r\n\r\n public async ObtenerDocumentoAnexo(\r\n tramiteSeguroId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Seguro.DocumentoSeguro[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n TramiteSeguroId: tramiteSeguroId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerDocumentoAnexo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerArchivoAnexoUrl = \"/api/Cliente/Cliente/Seguro/ObtenerArchivoAnexo\";\r\n\r\n public async ObtenerArchivoAnexo(token: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<Blob>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n token: token\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ObtenerArchivoAnexo\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n true,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public AgruparGarantiasUrl = \"/api/Cliente/Cliente/Seguro/AgruparGarantias\";\r\n\r\n public async AgruparGarantias(\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Financiamiento.GarantiaAdministradaDetalle[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/AgruparGarantias\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ContratosTramiteSeguroUrl = \"/api/Cliente/Cliente/Seguro/ContratosTramiteSeguro\";\r\n\r\n public async ContratosTramiteSeguro(\r\n tramiteSeguroId: number,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Core.Models.vwContratos[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tramiteSeguroId: tramiteSeguroId\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Seguro/ContratosTramiteSeguro\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n true,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n\r\n export class SiniestroApi extends BaseAPI {\r\n public ObtenerlistaSiniestrosUrl = \"/api/Cliente/Cliente/Siniestro/ObtenerlistaSiniestros\";\r\n\r\n public async ObtenerlistaSiniestros(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Siniestro.ListaSiniestroconDocumentos[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/ObtenerlistaSiniestros\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerSiniestrosClienteUrl = \"/api/Cliente/Cliente/Siniestro/ObtenerSiniestrosCliente\";\r\n\r\n public async ObtenerSiniestrosCliente(\r\n id: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Siniestro.ListaSiniestroconDocumentos[]>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n id: id\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/ObtenerSiniestrosCliente\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerDocumentosSiniestrosUrl = \"/api/Cliente/Cliente/Siniestro/ObtenerDocumentosSiniestros\";\r\n\r\n public async ObtenerDocumentosSiniestros(\r\n ruta: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/ObtenerDocumentosSiniestros\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public GuardarDocumentoSiniestroUrl = \"/api/Cliente/Cliente/Siniestro/GuardarDocumentoSiniestro\";\r\n\r\n public async GuardarDocumentoSiniestro(\r\n archivo: Blob,\r\n documentoTramiteSiniestroId: string,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n DocumentoTramiteSiniestroId: documentoTramiteSiniestroId\r\n };\r\n\r\n const data = objectToFormData({\r\n archivo: archivo\r\n });\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/GuardarDocumentoSiniestro\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public NotificarCambiosUrl = \"/api/Cliente/Cliente/Siniestro/NotificarCambios\";\r\n\r\n public async NotificarCambios(\r\n documentoSiniestroId: string,\r\n siniestrosDañosPortalCliente?: Siniestro.SiniestrosDañosPortalCliente,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n DocumentoSiniestroId: documentoSiniestroId\r\n };\r\n\r\n const data = siniestrosDañosPortalCliente;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/NotificarCambios\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public CrearSiniestroUrl = \"/api/Cliente/Cliente/Siniestro/CrearSiniestro\";\r\n\r\n public async CrearSiniestro(\r\n tipo: Core.Enums.TipoSinestro,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n tipo: tipo\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/CrearSiniestro\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public ObtenerZipUrl = \"/api/Cliente/Cliente/Siniestro/ObtenerZip\";\r\n\r\n public async ObtenerZip(ruta: string, opcionesAdicionalesAxios?: any): Promise<AxiosResponse<void>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter = {\r\n ruta: ruta\r\n };\r\n\r\n const data: any = undefined;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/ObtenerZip\",\r\n \"GET\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n\r\n public EnviarCorreoSiniestroVidaUrl = \"/api/Cliente/Cliente/Siniestro/EnviarCorreoSiniestroVida\";\r\n\r\n public async EnviarCorreoSiniestroVida(\r\n enviarCorreoSiniestroVidaBody?: Siniestro.EnviarCorreoSiniestroVidaBody,\r\n opcionesAdicionalesAxios?: any\r\n ): Promise<AxiosResponse<Respuesta>> {\r\n if (opcionesAdicionalesAxios == undefined) opcionesAdicionalesAxios = {};\r\n const localVarQueryParameter: any = undefined;\r\n const data = enviarCorreoSiniestroVidaBody;\r\n return ApiFp(this.configuration)\r\n .CrearSolicitador(\r\n \"/api/Cliente/Cliente/Siniestro/EnviarCorreoSiniestroVida\",\r\n \"POST\",\r\n localVarQueryParameter,\r\n false,\r\n data,\r\n false,\r\n opcionesAdicionalesAxios\r\n )\r\n .then(request => request(this.axios, this.basePath));\r\n }\r\n }\r\n }\r\n\r\n export namespace Financiamiento {\r\n /**\r\n * @description Clase Detalle de Adjudicaciones\r\n */\r\n export interface Adjudicaciones {\r\n /**\r\n * @description Identificador del Contrato\r\n */\r\n contratoId: number;\r\n /**\r\n * @description Numero de Contraro Unico\r\n */\r\n numeroCompleto?: string;\r\n /**\r\n * @description Nombre Completo del cliente\r\n */\r\n nombreCompletoCliente?: string;\r\n /**\r\n * @description fecha de cuadno adjudico\r\n */\r\n fechaAdjudicacion?: string;\r\n /**\r\n * @description monto de contrato\r\n */\r\n montoContratado: number;\r\n /**\r\n * @description aque grupo permtenece el contrato\r\n */\r\n numeroGrupo: number;\r\n /**\r\n * @description numero de coutas pagadas\r\n */\r\n numeroCuotaPagadaIngresoListaEspera: number;\r\n tipoAdjudicacion: TipoAdjudicacion;\r\n }\r\n\r\n /**\r\n * @description Clase customizada Contrato Domiciliado\r\n */\r\n export interface ContratoDomiciliado {\r\n /**\r\n * @description Identificador de Tabla Cifrado\r\n */\r\n cuentaDomiciliacionContratoId?: string;\r\n cuentaDomiciliacionId?: string;\r\n /**\r\n * @description Nombre de aquien se Domicilio\r\n */\r\n nombreDomiciliado?: string;\r\n /**\r\n * @description Clave interbancaria\r\n */\r\n clave?: string;\r\n /**\r\n * @description Telefono de quien Domicilia\r\n */\r\n telefono?: string;\r\n contratos: string[];\r\n }\r\n\r\n /**\r\n * @description Garantia con informacion para Vista de Seguro de Daños\r\n */\r\n export interface GarantiaAdministradaDetalle {\r\n garantiaAdministradaId: number;\r\n clienteId: number;\r\n cotitularId?: number;\r\n notarioId?: number;\r\n testimonioId?: number;\r\n descripcion?: string;\r\n calle?: string;\r\n numeroExterior?: string;\r\n numeroInterior?: string;\r\n codigoPostalCampoAbierto?: string;\r\n coloniaCampoAbierto?: string;\r\n coloniaId?: number;\r\n ciudadId: number;\r\n estadoId: number;\r\n productoContratado: Core.Models.ProductoContratado;\r\n tipoProducto: Core.Models.TipoProductoGarantia;\r\n valorGarantia: number;\r\n valorGarantiaActualizado: number;\r\n valorTotalContratos: number;\r\n fechaAvaluo?: string;\r\n certificadoDanios: boolean;\r\n calculaSeguroDanios: boolean;\r\n polizaAplicar: Core.Models.TipoPoliza;\r\n valorAsegurado: number;\r\n entregaArchivo: boolean;\r\n numeroEscritura?: string;\r\n activo: boolean;\r\n fechaUltimaActualizacion?: string;\r\n referenciaUnica?: string;\r\n modeloEscritura: number;\r\n alias?: string;\r\n notario: Core.Models.Notario;\r\n cliente: Core.Models.Cliente;\r\n operaciones?: Core.Models.Operacion[];\r\n contratos?: Core.Models.ContratoGarantia[];\r\n garantiaAdministradaDocumentos?: Core.Models.GarantiaAdministradaDocumento[];\r\n colonia: Core.Models.Colonia;\r\n /**\r\n * @description Porcentaje de Seguro de Daño\r\n */\r\n porcentaje: number;\r\n /**\r\n * @description Monto a pagar del Seguro de Daños\r\n */\r\n monto: number;\r\n /**\r\n * @description Nombre de la aseguradora\r\n */\r\n aseguradora?: string;\r\n /**\r\n * @description URL del Ceritifcado de Seguro de Daños\r\n */\r\n ruta?: string;\r\n }\r\n\r\n /**\r\n * @description Informacion para Recuperar Informacion Basica del Cliente\r\n */\r\n export interface InformacionCliente {\r\n /**\r\n * @description Identificador del Cliente\r\n */\r\n clienteId: number;\r\n /**\r\n * @description Nombre completo del cliente\r\n */\r\n nombreCompleto?: string;\r\n /**\r\n * @description Nombre del Cliente\r\n */\r\n nombre?: string;\r\n /**\r\n * @description Apellido paterno del Cliente\r\n */\r\n apellidoPaterno?: string;\r\n /**\r\n * @description Apellidos Cliente\r\n */\r\n apellidoMaterno?: string;\r\n /**\r\n * @description Correo del Cliente\r\n */\r\n correo?: string;\r\n /**\r\n * @description URL para Agendar Cita\r\n */\r\n urlDevQ?: string;\r\n /**\r\n * @description URL para comunicacion via WhatsApp\r\n */\r\n urlWhatsApp?: string;\r\n cliente: Core.Models.Cliente;\r\n }\r\n\r\n /**\r\n * @description Detalle sobre el financiamiento\r\n */\r\n export interface InformacionFinanciamiento {\r\n /**\r\n * @description Booleano para Saber si tiene complemento de Cuenta\r\n */\r\n tieneComplementoEstadoCuenta: boolean;\r\n /**\r\n * @description mostrar mes actual\r\n */\r\n mostrarMesActual: boolean;\r\n /**\r\n * @description Monto contratado\r\n */\r\n montoContratado?: number;\r\n /**\r\n * @description Cantidad a pagar\r\n */\r\n totalPagar?: number;\r\n /**\r\n * @description Cantidad a pagar vencida\r\n */\r\n totalPagarVencido?: number;\r\n /**\r\n * @description URL para descargar pdf e complemento\r\n */\r\n linkDescargaComplemento?: string;\r\n /**\r\n * @description Referencia única del cliente para el pago de sus contratos\r\n */\r\n referenciaUnica?: string;\r\n /**\r\n * @description Fecha de Registro en Sietema\r\n */\r\n fechaSistema?: string;\r\n /**\r\n * @description Fecha de Vigencia de Contraro\r\n */\r\n fechaVigencia?: string;\r\n /**\r\n * @description Proxima fecha de corte\r\n */\r\n proximaFechaCorte?: string;\r\n /**\r\n * @description Última fecha de corte\r\n */\r\n ultimaFechaCorte?: string;\r\n /**\r\n * @description Saber si el cliente en alguno de sus contratos tiene descuentos\r\n */\r\n tieneDescuentos: boolean;\r\n }\r\n\r\n /**\r\n * @description Detalle de financiamineto por contrato\r\n */\r\n export interface InformacionFinanciamientoContrato {\r\n /**\r\n * @description Identificador de contrato\r\n */\r\n contratoId: number;\r\n /**\r\n * @description numero de contrato\r\n */\r\n numeroContrato?: string;\r\n /**\r\n * @description Referencia unica de contrato\r\n */\r\n referenciaUnica?: string;\r\n /**\r\n * @description Fondeo a la que pertenece el contrato\r\n */\r\n fondeo?: number;\r\n /**\r\n * @description total de pagar por contrato\r\n */\r\n totalPagar?: number;\r\n montoContratado?: number;\r\n /**\r\n * @description saber si el último recibo del contrato está vencido\r\n */\r\n vencido: boolean;\r\n /**\r\n * @description grupo a que pertence el contrato\r\n */\r\n grupo?: string;\r\n /**\r\n * @description etapa en la que se encuentra el contrato\r\n */\r\n etapa?: string;\r\n /**\r\n * @description Garantia del contrato\r\n */\r\n garantia: number;\r\n productoContratado?: Core.Models.ProductoContratado;\r\n /**\r\n * @description Alias del inmueble garantÃa establecido por el cliente\r\n */\r\n aliasGarantia?: string;\r\n /**\r\n * @description URL para Manual de Grupo\r\n */\r\n linkManualGrupo?: string;\r\n /**\r\n * @description URL para contrato de grupo\r\n */\r\n linkContratoGrupo?: string;\r\n linkEstadoCuentaContrato: string[];\r\n /**\r\n * @description Cantidad de pagos realizados\r\n */\r\n numeroCuotaVigente: number;\r\n /**\r\n * @description Cantidad de NumeroCuotaVencida\r\n */\r\n numeroCuotaVencida: number;\r\n /**\r\n * @description Cantidad de NumeroCuotaAnticipada\r\n */\r\n numeroCuotaAnticipada: number;\r\n /**\r\n * @description Cantidad de NumeroCuotaPendiente\r\n */\r\n numeroCuotaPendiente: number;\r\n /**\r\n * @description Cantidad de NumeroCuotaPendiente\r\n */\r\n totalCuotas: number;\r\n /**\r\n * @description Valor de funcion de tabla de Monto de Couta Vigente del contrato\r\n */\r\n montoCoutaVigente: number;\r\n esDomiciliado?: TipoDomiciliacion;\r\n /**\r\n * @description Cuota que tiene un contrato\r\n */\r\n cuotaAdeudo: number;\r\n /**\r\n * @description Fecha de vigencia\r\n */\r\n fechaVigencia?: string;\r\n contratoDomiciliado: ContratoDomiciliado;\r\n }\r\n\r\n export interface Pago {\r\n /**\r\n * @description Fecha del pago.\r\n */\r\n fecha: string;\r\n /**\r\n * @description Numero de contrato al que se realizó el pago.\r\n */\r\n numContrato?: string;\r\n /**\r\n * @description Monto del pago realizado.\r\n */\r\n monto: number;\r\n }\r\n\r\n export interface RespuestaUltimosPagos {\r\n estado: EstadoRespuesta;\r\n /**\r\n * @description Mensaje que se proporcionara para notificar estado\r\n */\r\n mensaje?: string;\r\n /**\r\n * @description Mensaje que se proporcionara para notificar estado\r\n */\r\n pagos?: Pago[];\r\n }\r\n\r\n export enum TipoAdjudicacion {\r\n DIRECTO = \"DIRECTO\",\r\n NATURAL = \"NATURAL\",\r\n SUBASTA = \"SUBASTA\",\r\n LISTA_DE_ESPERA = \"LISTA_DE_ESPERA\",\r\n OBLIGATORIA = \"OBLIGATORIA\",\r\n NATURAL_SIN_LISTA_ESPERA = \"NATURAL_SIN_LISTA_ESPERA\",\r\n LIQUIDACIÓN = \"LIQUIDACIÓN\",\r\n POR_LIQUIDACIÓN = \"POR_LIQUIDACIÓN\",\r\n SIN_LISTA_ESPERA = \"SIN_LISTA_ESPERA\"\r\n }\r\n\r\n export enum TipoDomiciliacion {\r\n Domiciliado = \"Domiciliado\",\r\n Proceso = \"Proceso\"\r\n }\r\n }\r\n\r\n export namespace Perfil {\r\n export interface DocumentosTramiteTitulacionCategoria {\r\n categoria?: string;\r\n documentos?: FormatoDocumentoJson[];\r\n }\r\n\r\n export interface DocumentoTramiteTitulacionEntidad {\r\n entidad?: string;\r\n documentosPorCategoria?: DocumentosTramiteTitulacionCategoria[];\r\n }\r\n\r\n export interface FormatoDocumentoJson {\r\n documentoTramiteTitulacionId: number;\r\n nombre?: string;\r\n guardado: boolean;\r\n /**\r\n * @description 0 En Revisión 1 Aceptado 2 Rechazado 3 No necesario 4 Solicitado\r\n */\r\n estatus?: number;\r\n comentario?: string;\r\n created_at: string;\r\n archivo?: string;\r\n linkArchivo?: string;\r\n tipoArchivo?: string;\r\n }\r\n\r\n /**\r\n * @description Objeto respuesta de método obtener\r\n */\r\n export interface GiroIngresoRespuesta {\r\n giroId: number;\r\n giro?: string;\r\n }\r\n\r\n /**\r\n * @description Respuesta de operacion titulación\r\n */\r\n export interface OperacionTitulacionRespuesta {\r\n operacionTitulacionId?: string;\r\n etapaTitulacion: Core.Models.EtapaOperacionTitulacion;\r\n }\r\n }\r\n\r\n export namespace Models {\r\n export namespace Estadisticas {\r\n export enum ModuloEstadistica {\r\n PAGOS = \"PAGOS\",\r\n CALCULADORA = \"CALCULADORA\",\r\n DOMICILIACION = \"DOMICILIACION\",\r\n ESTADO_CUENTA = \"ESTADO_CUENTA\",\r\n LOGIN = \"LOGIN\"\r\n }\r\n }\r\n\r\n export enum AplicacionMotorPagos {\r\n PORTAL_CLIENTE = \"PORTAL_CLIENTE\",\r\n APLICACION_MOVIL_CLIENTE = \"APLICACION_MOVIL_CLIENTE\"\r\n }\r\n\r\n /**\r\n * @description Campañas del Banner\r\n */\r\n export interface BannerCampania {\r\n /**\r\n * @description ID de la campaña\r\n */\r\n bannerCampaniaId: number;\r\n /**\r\n * @description Nombre de la campaña\r\n */\r\n nombre?: string;\r\n /**\r\n * @description URL de la imagen que se mostrará para el banner. Debe tener una dimensiones de 600x250 máximo\r\n */\r\n bannerUrl?: string;\r\n /**\r\n * @description URL que se abrirá al darle click al banner\r\n */\r\n linkUrl?: string;\r\n /**\r\n * @description Fecha de inicio de la campaña\r\n */\r\n fechaInicio: string;\r\n /**\r\n * @description Fecha de finalización de la campaña, puede ser nula para no tener fin\r\n */\r\n fechaFin?: string;\r\n /**\r\n * @description Prioridad u orden en el que mostrará el banner cuando un cliente tiene más de un banner\r\n */\r\n prioridad: number;\r\n /**\r\n * @description Clientes de la campaña\r\n */\r\n clientes?: BannerCampaniaCliente[];\r\n }\r\n\r\n /**\r\n * @description Clientes que pertenecen a una campaña\r\n */\r\n export interface BannerCampaniaCliente {\r\n /**\r\n * @description ID de la campaña\r\n */\r\n bannerCampaniaId: number;\r\n /**\r\n * @description ID del cliente\r\n */\r\n clienteId: number;\r\n bannerCampania: BannerCampania;\r\n }\r\n\r\n export interface CalculadoraBody {\r\n nombreCompleto?: string;\r\n telefono?: string;\r\n email?: string;\r\n cp?: string;\r\n montoContratar: number;\r\n ingresoMensual: number;\r\n medioPreferidoContacto: MedioPreferidoContacto;\r\n tipoAdquisicion: TipoAdquisicion;\r\n }\r\n\r\n export enum MedioPreferidoContacto {\r\n TELEFONO = \"TELEFONO\",\r\n CORREO = \"CORREO\",\r\n WHATSAPP = \"WHATSAPP\"\r\n }\r\n\r\n export enum TipoAdquisicion {\r\n COMPRAR = \"COMPRAR\",\r\n CONSTRUIR = \"CONSTRUIR\",\r\n REMODELAR = \"REMODELAR\"\r\n }\r\n }\r\n}\r\n\r\nexport namespace Core {\r\n export namespace Enums {\r\n export enum ActividadEconomica {\r\n EMPRESA_PRIVADA = \"EMPRESA_PRIVADA\",\r\n EMPRESA_FAMILIAR = \"EMPRESA_FAMILIAR\",\r\n GOBIERNO = \"GOBIERNO\",\r\n PROFESIONISTA_INDEPENDIENTE = \"PROFESIONISTA_INDEPENDIENTE\",\r\n COMERCIO = \"COMERCIO\",\r\n SOCIO_O_DUEÑO = \"SOCIO_O_DUEÑO\"\r\n }\r\n\r\n export enum Canal {\r\n App_Movil = \"App_Movil\",\r\n Portal_Del_Cliente = \"Portal_Del_Cliente\"\r\n }\r\n\r\n export enum CategoriaDocumentoTramiteTitulacion {\r\n COMPROBANTE_DE_IDENTFICACION_PERSONA_FISICA = \"COMPROBANTE_DE_IDENTFICACION_PERSONA_FISICA\",\r\n DOCUMENTOS_GENERALES_DE_PERSONA_FISICA = \"DOCUMENTOS_GENERALES_DE_PERSONA_FISICA\",\r\n DOCUMENTOS_DEL_INMUEBLE = \"DOCUMENTOS_DEL_INMUEBLE\",\r\n COMPROBANTE_DE_INGRESOS = \"COMPROBANTE_DE_INGRESOS\",\r\n BURO_DE_CREDITO = \"BURO_DE_CREDITO\",\r\n FORMATO_INTERNO = \"FORMATO_INTERNO\",\r\n COMPROBANTE_DE_PAGO = \"COMPROBANTE_DE_PAGO\",\r\n DOCUMENTOS_GENERALES_DE_PERSONA_MORAL = \"DOCUMENTOS_GENERALES_DE_PERSONA_MORAL\",\r\n OTROS = \"OTROS\"\r\n }\r\n\r\n export enum CategoriasDeposito {\r\n NORMAL = \"NORMAL\",\r\n DOMICILIACION = \"DOMICILIACION\",\r\n REVERSO_BANCARIO = \"REVERSO_BANCARIO\",\r\n TRASPASO_MISMO_GRUPO = \"TRASPASO_MISMO_GRUPO\",\r\n TRASPASO_DIFERENTE_GRUPO = \"TRASPASO_DIFERENTE_GRUPO\",\r\n TRASPASO_MISMO_GRUPO_CON_DESCUENTO = \"TRASPASO_MISMO_GRUPO_CON_DESCUENTO\",\r\n TRASPASO_DIFERENTE_GRUPO_CON_DESCUENTO = \"TRASPASO_DIFERENTE_GRUPO_CON_DESCUENTO\",\r\n DISMINUCION = \"DISMINUCION\",\r\n INCREMENTO = \"INCREMENTO\",\r\n CANCELACION = \"CANCELACION\",\r\n DOMICILIACION_CON_DESCUENTO_C_ADMON = \"DOMICILIACION_CON_DESCUENTO_C_ADMON\",\r\n CUENTAS_INVEX = \"CUENTAS_INVEX\",\r\n DOMICILIACIÓN_INVEX = \"DOMICILIACIÓN_INVEX\",\r\n CUENTAS_INVEX_II = \"CUENTAS_INVEX_II\",\r\n DOMICILIACIÓN_INVEX_II = \"DOMICILIACIÓN_INVEX_II\",\r\n CUENTAS_INVEX_III = \"CUENTAS_INVEX_III\",\r\n DOMICILIACIÓN_INVEX_III = \"DOMICILIACIÓN_INVEX_III\",\r\n DOMICILIACION_INVEX_CON_DESCUENTO_C_ADMON = \"DOMICILIACION_INVEX_CON_DESCUENTO_C_ADMON\",\r\n DOMICILIACION_INVEX_II_CON_DESCUENTO_C_ADMON = \"DOMICILIACION_INVEX_II_CON_DESCUENTO_C_ADMON\",\r\n DOMICILIACION_INVEX_III_CON_DESCUENTO_C_ADMON = \"DOMICILIACION_INVEX_III_CON_DESCUENTO_C_ADMON\"\r\n }\r\n\r\n export enum ConceptoTransaccion {\r\n APORTACIÓN = \"APORTACIÓN\",\r\n ANTICIPO = \"ANTICIPO\",\r\n CUOTA_DE_INSCRIPCIÓN = \"CUOTA_DE_INSCRIPCIÓN\",\r\n SEGUNDA_CUOTA_DE_INSCRIPCIÓN = \"SEGUNDA_CUOTA_DE_INSCRIPCIÓN\",\r\n GASTOS_DE_COBRANZA = \"GASTOS_DE_COBRANZA\",\r\n MORATORIOS = \"MORATORIOS\",\r\n CESIÓN_DE_DERECHOS = \"CESIÓN_DE_DERECHOS\",\r\n INSCRIPCIÓN_POR_INCREMENTO = \"INSCRIPCIÓN_POR_INCREMENTO\",\r\n CANCELACIÓN_APORTACION = \"CANCELACIÓN_APORTACION\",\r\n CANCELACIÓN_INSCRIPCIÓN = \"CANCELACIÓN_INSCRIPCIÓN\",\r\n APORTACIÓN_DISMINUCIÓN = \"APORTACIÓN_DISMINUCIÓN\",\r\n APORTACIÓN_POR_TRASPASO = \"APORTACIÓN_POR_TRASPASO\",\r\n CANCELACIÓN = \"CANCELACIÓN\",\r\n CANCELAPAGO = \"CANCELAPAGO\",\r\n CHEQUEDEVUELTO = \"CHEQUEDEVUELTO\",\r\n DISMINUCION = \"DISMINUCION\",\r\n FUSION = \"FUSION\",\r\n GASTOSDIVERSOS = \"GASTOSDIVERSOS\",\r\n REESTRUCTURA = \"REESTRUCTURA\",\r\n RESCISION = \"RESCISION\",\r\n REVERSO = \"REVERSO\",\r\n TRASPASO = \"TRASPASO\",\r\n INSCRIPCIÓN_POR_DISMINUCION = \"INSCRIPCIÓN_POR_DISMINUCION\",\r\n ANTICIPO_POR_FUSIÓN = \"ANTICIPO_POR_FUSIÓN\",\r\n ANTICIPO_POR_TRASPASO = \"ANTICIPO_POR_TRASPASO\",\r\n ANTICIPO_POR_DOMICILIACIÓN = \"ANTICIPO_POR_DOMICILIACIÓN\",\r\n ANTICIPO_POR_REESTRUCTURA = \"ANTICIPO_POR_REESTRUCTURA\",\r\n APORTACIÓN_POR_DOMICILIACIÓN = \"APORTACIÓN_POR_DOMICILIACIÓN\",\r\n APORTACIÓN_POR_INCREMENTO = \"APORTACIÓN_POR_INCREMENTO\",\r\n APORTACIÓN_POR_FUSIÓN = \"APORTACIÓN_POR_FUSIÓN\",\r\n APORTACIÓN_POR_REESTRUCTURA = \"APORTACIÓN_POR_REESTRUCTURA\",\r\n ANTICIPO_POR_DISMINUCIÓN = \"ANTICIPO_POR_DISMINUCIÓN\",\r\n APORTACIÓN_POR_DISMINUCIÓN = \"APORTACIÓN_POR_DISMINUCIÓN\",\r\n APORTACIÓN_ANTICIPADA_HIRAUTO = \"APORTACIÓN_ANTICIPADA_HIRAUTO\",\r\n APORTACIÓN_ANTICIPADA_HIRCASAFIJO = \"APORTACIÓN_ANTICIPADA_HIRCASAFIJO\",\r\n PRÉSTAMO_BPR = \"PRÉSTAMO_BPR\"\r\n }\r\n\r\n export enum CondicionLadrillo {\r\n SIN_LADRILLOS = \"SIN_LADRILLOS\",\r\n CUOTA_PERIODICA_PUNTUAL = \"CUOTA_PERIODICA_PUNTUAL\",\r\n CUOTA_PERIODICA_ADELANTADA = \"CUOTA_PERIODICA_ADELANTADA\",\r\n CUOTA_ANTICIPADA = \"CUOTA_ANTICIPADA\",\r\n CONTRATACION_1 = \"CONTRATACION_1\",\r\n CONTRATACION_1_PRIMER_CUOTA_PUNTUAL = \"CONTRATACION_1_PRIMER_CUOTA_PUNTUAL\",\r\n CONTRATACION_1_SEGUNDA_CUOTA_PUNTUAL = \"CONTRATACION_1_SEGUNDA_CUOTA_PUNTUAL\",\r\n RECONTRATACIÓN = \"RECONTRATACIÓN\",\r\n CONTRATACION2_SEIS_CUOTAS_PUNTUALES = \"CONTRATACION2_SEIS_CUOTAS_PUNTUALES\",\r\n GANADOR = \"GANADOR\"\r\n }\r\n\r\n export enum EstatusAlta {\r\n Activo = \"Activo\",\r\n Inactivo = \"Inactivo\",\r\n Recuperacion_Automatica = \"Recuperacion_Automatica\"\r\n }\r\n\r\n export enum EstatusDeposito {\r\n POR_APLICAR = \"POR_APLICAR\",\r\n APLICADO = \"APLICADO\",\r\n NO_IDENTIFICADO = \"NO_IDENTIFICADO\",\r\n NO_APLICADO = \"NO_APLICADO\",\r\n REVERSO_BANCARIO = \"REVERSO_BANCARIO\",\r\n FUSION_TRASPASO = \"FUSION_TRASPASO\",\r\n FUSION_TRASPASO_CON_DESCUENTO = \"FUSION_TRASPASO_CON_DESCUENTO\",\r\n REVERSO_COMISIÓN_NO_APLICADO = \"REVERSO_COMISIÓN_NO_APLICADO\"\r\n }\r\n\r\n export enum EstatusRecibo {\r\n VIGENTE = \"VIGENTE\",\r\n VENCIDO = \"VENCIDO\",\r\n PAGADO = \"PAGADO\",\r\n PRORROGA_POR_CONTINGENCIA = \"PRORROGA_POR_CONTINGENCIA\",\r\n FUTURO = \"FUTURO\",\r\n EN_TRÃMITE_PAGAR_CLIENTE = \"EN_TRÃMITE_PAGAR_CLIENTE\",\r\n EN_TRÃMITE_DESCONTADO_MONTO_ADJ = \"EN_TRÃMITE_DESCONTADO_MONTO_ADJ\",\r\n EN_TRÃMITE_DESCUENTO_DEL_MONTO_ADJ_POR_AFIRMATIVA_FICTA = \"EN_TRÃMITE_DESCUENTO_DEL_MONTO_ADJ_POR_AFIRMATIVA_FICTA\",\r\n ELIMINADO_PARCIALIDAD_PRORROGA = \"ELIMINADO_PARCIALIDAD_PRORROGA\",\r\n ELIMINADO = \"ELIMINADO\"\r\n }\r\n\r\n export enum EstatusSesion {\r\n Inicio_Sesion = \"Inicio_Sesion\",\r\n Recuperacion_Manual = \"Recuperacion_Manual\",\r\n Recuperacion_Automatica = \"Recuperacion_Automatica\",\r\n Alta_Usuario = \"Alta_Usuario\",\r\n Actualizacion_Domicilio = \"Actualizacion_Domicilio\"\r\n }\r\n\r\n export enum EstatusTramiteSeguro {\r\n EN_TRAMITE = \"EN_TRAMITE\",\r\n PENDIENTE = \"PENDIENTE\",\r\n ACEPTADO_EN_SU_TOTALIDAD = \"ACEPTADO_EN_SU_TOTALIDAD\",\r\n EXTRAPRIMADO = \"EXTRAPRIMADO\",\r\n EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ = \"EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ\",\r\n EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO = \"EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO\",\r\n EXTRAPRIMADO_Y_RECHAZADO_EN_SEG_DESEMPLEO = \"EXTRAPRIMADO_Y_RECHAZADO_EN_SEG_DESEMPLEO\",\r\n PENDIENTE_DE_DICTAMEN = \"PENDIENTE_DE_DICTAMEN\",\r\n RECHAZADO_EN_INVALIDEZ = \"RECHAZADO_EN_INVALIDEZ\",\r\n RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO = \"RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO\",\r\n RECHAZADO_EN_SEG_DESEMPLEO = \"RECHAZADO_EN_SEG_DESEMPLEO\",\r\n RECHAZADO_EN_SU_TOTALIDAD = \"RECHAZADO_EN_SU_TOTALIDAD\",\r\n REQUIERE_EXAMEN_MEDICO = \"REQUIERE_EXAMEN_MEDICO\",\r\n REQUIERE_INFORMACION_ADICIONAL = \"REQUIERE_INFORMACION_ADICIONAL\",\r\n CESIÓN_DERECHOS = \"CESIÓN_DERECHOS\",\r\n CANCELACIÓN = \"CANCELACIÓN\",\r\n RECONSIDERACIÓN_ASEGURADORA = \"RECONSIDERACIÓN_ASEGURADORA\",\r\n ELIMINADO = \"ELIMINADO\",\r\n CANCELADO_POR_CESIÓN_DERECHOS = \"CANCELADO_POR_CESIÓN_DERECHOS\"\r\n }\r\n\r\n export enum EstudioSocioeconomicoEntidad {\r\n CLIENTE = \"CLIENTE\",\r\n OBLIGADO_SOLIDARIO = \"OBLIGADO_SOLIDARIO\",\r\n COTITULAR = \"COTITULAR\",\r\n GARANTE_HIPOTECARIO = \"GARANTE_HIPOTECARIO\",\r\n VENDEDOR = \"VENDEDOR\",\r\n CLIENTE_PERSONA_MORAL = \"CLIENTE_PERSONA_MORAL\",\r\n CONYUGE = \"CONYUGE\",\r\n CONYUGE_VENDEDOR = \"CONYUGE_VENDEDOR\",\r\n CONYUGE_GARANTE_HIPOTECARIO = \"CONYUGE_GARANTE_HIPOTECARIO\",\r\n CLIENTE_INMUEBLE_GARANTIA = \"CLIENTE_INMUEBLE_GARANTIA\",\r\n CLIENTE_PERSONA_MORAL_APODERADO = \"CLIENTE_PERSONA_MORAL_APODERADO\",\r\n CLIENTE_MORAL_REPRESENTANTE_LEGAL = \"CLIENTE_MORAL_REPRESENTANTE_LEGAL\",\r\n VENDEDOR_PERSONA_MORAL = \"VENDEDOR_PERSONA_MORAL\",\r\n VENDEDOR_INMUEBLE_GARANTIA = \"VENDEDOR_INMUEBLE_GARANTIA\",\r\n VENDEDOR_PERSONA_MORAL_REPRESENTANTE_LEGAL = \"VENDEDOR_PERSONA_MORAL_REPRESENTANTE_LEGAL\",\r\n COTITULAR_CONYUGE = \"COTITULAR_CONYUGE\"\r\n }\r\n\r\n export enum FormaPago {\r\n EFECTIVO = \"EFECTIVO\",\r\n CHEQUE = \"CHEQUE\",\r\n TRANSFERENCIA_ELECTRÓNICA = \"TRANSFERENCIA_ELECTRÓNICA\",\r\n TARJETA_DE_CRÉDITO = \"TARJETA_DE_CRÉDITO\",\r\n MONEDERO_ELECTRÓNICO = \"MONEDERO_ELECTRÓNICO\",\r\n DINERO_ELECTRÓNICO = \"DINERO_ELECTRÓNICO\",\r\n VALES_DE_DESPENSA = \"VALES_DE_DESPENSA\",\r\n TARJETA_DE_DÉBITO = \"TARJETA_DE_DÉBITO\",\r\n TARJETA_DE_SERVICIO = \"TARJETA_DE_SERVICIO\",\r\n OTROS = \"OTROS\",\r\n MERCADO_PAGO = \"MERCADO_PAGO\"\r\n }\r\n\r\n export enum OrigenTransaccion {\r\n CONVERSION = \"CONVERSION\",\r\n RAP = \"RAP\",\r\n SALDO_A_FAVOR = \"SALDO_A_FAVOR\",\r\n NO_APLICADOS = \"NO_APLICADOS\",\r\n CUENTA_PUENTE = \"CUENTA_PUENTE\",\r\n MANUAL_NO_APLICADOS = \"MANUAL_NO_APLICADOS\",\r\n DISMINUCION = \"DISMINUCION\",\r\n TRASPASO = \"TRASPASO\",\r\n MANUAL_NO_APLICADOS_ = \"MANUAL_NO_APLICADOS_\",\r\n COMISION = \"COMISION\",\r\n FUSION = \"FUSION\"\r\n }\r\n\r\n export enum Propietario {\r\n GENERAL = \"GENERAL\",\r\n ATC = \"ATC\",\r\n JURIDICO = \"JURIDICO\"\r\n }\r\n\r\n export enum Segmentacion {\r\n NORMAL = \"NORMAL\",\r\n LIQUIDACION = \"LIQUIDACION\",\r\n PAGO_POR_SINIESTRO = \"PAGO_POR_SINIESTRO\",\r\n SEGURO_DE_DESEMPLEO = \"SEGURO_DE_DESEMPLEO\",\r\n ADJUDICACION_OBLIGATORIA = \"ADJUDICACION_OBLIGATORIA\",\r\n INGRESO_A_LISTA_DE_ESPERA = \"INGRESO_A_LISTA_DE_ESPERA\",\r\n CONVENIO_DE_PAGOS = \"CONVENIO_DE_PAGOS\",\r\n NEGOCIACION_JURIDICO = \"NEGOCIACION_JURIDICO\",\r\n TRASPASO = \"TRASPASO\",\r\n LIQUIDACIÓN_BPR = \"LIQUIDACIÓN_BPR\",\r\n RECUPERACIÓN_BPR = \"RECUPERACIÓN_BPR\",\r\n MUTUO_PARA_PREVENTA = \"MUTUO_PARA_PREVENTA\",\r\n PRORROGA = \"PRORROGA\",\r\n APOYO_COVID_19 = \"APOYO_COVID_19\",\r\n PAGO_CON_DESCUENTO_EN_C_ADMON = \"PAGO_CON_DESCUENTO_EN_C_ADMON\"\r\n }\r\n\r\n export enum TipoConstruccion {\r\n CASA_HABITACION = \"CASA_HABITACION\",\r\n LOCAL_COMERCIAL = \"LOCAL_COMERCIAL\"\r\n }\r\n\r\n export enum TipoDocumentoDomiciliacion {\r\n Identificacion_Oficial_Cliente = \"Identificacion_Oficial_Cliente\",\r\n Estado_Cuenta_Cliente = \"Estado_Cuenta_Cliente\",\r\n Identificacion_Oficial_Tercero = \"Identificacion_Oficial_Tercero\",\r\n Estado_Cuenta_Tercero = \"Estado_Cuenta_Tercero\",\r\n Formato_Domiciliacion_Tercero = \"Formato_Domiciliacion_Tercero\"\r\n }\r\n\r\n export enum TipoFuenteIngreso {\r\n EMPLEADO_POR_NOMINA = \"EMPLEADO_POR_NOMINA\",\r\n NEGOCIO_PROPIO = \"NEGOCIO_PROPIO\",\r\n ACTIVIDAD_EMPRESARIAL = \"ACTIVIDAD_EMPRESARIAL\",\r\n ARRENDAMIENTO = \"ARRENDAMIENTO\",\r\n CONCESIONES = \"CONCESIONES\",\r\n PENSION = \"PENSION\",\r\n OTROS = \"OTROS\",\r\n CONYUGE = \"CONYUGE\"\r\n }\r\n\r\n export enum TipoMaterialApoyo {\r\n Titulo = \"Titulo\",\r\n Texto = \"Texto\",\r\n SubTitulo = \"SubTitulo\"\r\n }\r\n\r\n export enum TipoMenuMaterialApoyo {\r\n Bienvenida = \"Bienvenida\",\r\n Pagos = \"Pagos\",\r\n Tramites = \"Tramites\",\r\n Adjudicación = \"Adjudicación\",\r\n Escrituración = \"Escrituración\",\r\n Seguros = \"Seguros\",\r\n Liquidación = \"Liquidación\"\r\n }\r\n\r\n export enum TipoProducto {\r\n HIR_CASA = \"HIR_CASA\",\r\n HIR_AUTO = \"HIR_AUTO\",\r\n HIR_EFECTIVO = \"HIR_EFECTIVO\",\r\n HIR_CASA_FIJO = \"HIR_CASA_FIJO\"\r\n }\r\n\r\n export enum TipoRecibo {\r\n APORTACIÓN = \"APORTACIÓN\",\r\n CUOTA_DE_INSCRIPCIÓN = \"CUOTA_DE_INSCRIPCIÓN\",\r\n SEGUNDA_CUOTA_DE_INSCRIPCIÓN = \"SEGUNDA_CUOTA_DE_INSCRIPCIÓN\",\r\n CESIÓN_DE_DERECHOS = \"CESIÓN_DE_DERECHOS\",\r\n INSCRIPCIÓN_POR_INCREMENTO = \"INSCRIPCIÓN_POR_INCREMENTO\",\r\n APORTACIÓN_POR_DISMINUCIÓN = \"APORTACIÓN_POR_DISMINUCIÓN\",\r\n APORTACIÓN_POR_INCREMENTO = \"APORTACIÓN_POR_INCREMENTO\",\r\n APORTACIÓN_FIJA_HIRAUTO = \"APORTACIÓN_FIJA_HIRAUTO\",\r\n APORTACIÓN_FIJA_HIRCASA = \"APORTACIÓN_FIJA_HIRCASA\",\r\n APORTACIÓN_PRORROGADA = \"APORTACIÓN_PRORROGADA\"\r\n }\r\n\r\n export enum TipoSinestro {\r\n FALLECIMIENTO = \"FALLECIMIENTO\",\r\n INVALIDEZ_TOTAL_PERMANENTE = \"INVALIDEZ_TOTAL_PERMANENTE\",\r\n DESEMPLEO_1A_MENSUALIDAD = \"DESEMPLEO_1A_MENSUALIDAD\",\r\n DESEMPLEO_2A_MENSUALIDAD = \"DESEMPLEO_2A_MENSUALIDAD\",\r\n DESEMPLEO_3A_MENSUALIDAD = \"DESEMPLEO_3A_MENSUALIDAD\",\r\n DAÑOS = \"DAÑOS\"\r\n }\r\n\r\n export enum UsoInmueble {\r\n HABITAR = \"HABITAR\",\r\n RENTAR = \"RENTAR\",\r\n CASA_DE_DESCANSO = \"CASA_DE_DESCANSO\",\r\n INVERSION = \"INVERSION\",\r\n HABITABLE_POR_TERCEROS = \"HABITABLE_POR_TERCEROS\"\r\n }\r\n }\r\n\r\n export namespace Models {\r\n export interface Aclaracion {\r\n aclaracionId: number;\r\n fecha: string;\r\n clienteId: number;\r\n tipoAclaracionId: number;\r\n detalle?: string;\r\n fechaTerminacion?: string;\r\n archivo: boolean;\r\n tipoAclaracion: TipoAclaracion;\r\n }\r\n\r\n export interface AclaracionUsuario {\r\n aclaracionUsuarioId: number;\r\n aclaracionId: number;\r\n usuarioId: number;\r\n aclaracion: Aclaracion;\r\n usuario: Usuario;\r\n }\r\n\r\n export interface AltaUsuario {\r\n altaUsuarioID: number;\r\n numContrato?: string;\r\n correo?: string;\r\n password?: string;\r\n estatus: Enums.EstatusAlta;\r\n fechaRegistro: string;\r\n clienteId: number;\r\n cliente: Cliente;\r\n }\r\n\r\n export interface CalendarioCorte {\r\n calendarioCorteId: number;\r\n planId: number;\r\n fechaEmision: string;\r\n fechaPagosAl: string;\r\n fechaVigenciaRecibo: string;\r\n fechaVigenciaTasaActualizacion: string;\r\n plan: Plan;\r\n }\r\n\r\n export interface Ciudad {\r\n ciudadId: number;\r\n descripcion?: string;\r\n estadoId: number;\r\n estado: Estado;\r\n }\r\n\r\n export interface Cliente {\r\n clienteId: number;\r\n prospectoId: number;\r\n personaFisicaId?: number;\r\n personaMoralId?: number;\r\n tipo: TipoCliente;\r\n activo: boolean;\r\n arco: boolean;\r\n programaRecicla: boolean;\r\n salesForceCuentaId?: string;\r\n programaEspecial?: ProgramaEspecial;\r\n referenciaUnica?: string;\r\n clienteReferenciaId?: number;\r\n aceptaTerminosCondicionesAvisoPrivacidad: boolean;\r\n imagenPerfil?: string;\r\n personaFisica: PersonaFisica;\r\n personaMoral: PersonaMoral;\r\n listasNegras?: ListaNegra[];\r\n esPersonaFisica: boolean;\r\n telefono1?: string;\r\n telefono2?: string;\r\n telefono3?: string;\r\n email1?: string;\r\n email2?: string;\r\n pais?: string;\r\n codigoPostal?: string;\r\n calleNumero?: string;\r\n colonia?: string;\r\n delegacion?: string;\r\n estado?: string;\r\n }\r\n\r\n export interface CodigoPostal {\r\n codigoPostalId: number;\r\n descripcion?: string;\r\n ciudadId: number;\r\n ciudad: Ciudad;\r\n colonias?: Colonia[];\r\n }\r\n\r\n export interface Colonia {\r\n coloniaId: number;\r\n descripcion?: string;\r\n codigoPostalId: number;\r\n codigoPostal: CodigoPostal;\r\n }\r\n\r\n export interface Contrato {\r\n contratoId: number;\r\n solicitudId: number;\r\n folioId: number;\r\n estatus: EstatusContrato;\r\n estatusLegal: EstatusContratoLegal;\r\n estadoProcesal: number;\r\n fondeo?: TipoFondeo;\r\n montoContratado: number;\r\n pagoAutomatico: boolean;\r\n poderNotarialId?: number;\r\n candadoTransacciones: boolean;\r\n montoDisponible: number;\r\n folio: Folio;\r\n solicitud: Solicitud;\r\n transaccionesAnticipo?: TransaccionAnticipo[];\r\n recibos?: Recibo[];\r\n }\r\n\r\n export interface ContratoGarantia {\r\n contratoGarantiaId: number;\r\n contratoId: number;\r\n garantiaAdministradaId: number;\r\n operacionId?: number;\r\n estatusComplemento: EstatusComplementoCI;\r\n fechaEscriturado?: string;\r\n valorGarantiaInicial?: number;\r\n valorGarantiaActualizada?: number;\r\n valorGarantiaActualizadaINPC?: number;\r\n actualizacionCalendarioCorteId?: number;\r\n montoAportadoCapitalAlEscriturar?: number;\r\n cuotaPuntual?: number;\r\n cuotaNoPuntual?: number;\r\n cuotaAnticipada?: number;\r\n cuotaTotalPagada?: number;\r\n montoActualizadoAlEscriturar?: number;\r\n activo: boolean;\r\n ejecutivo?: string;\r\n fechaEntregaDocumentacion?: string;\r\n loanToValueOriginal: number;\r\n loanToValueActual: number;\r\n contrato: Contrato;\r\n garantia: GarantiaAdministrada;\r\n operacion: Operacion;\r\n }\r\n\r\n export interface Deposito {\r\n depositoId: number;\r\n estatus: Enums.EstatusDeposito;\r\n fechaTransaccion: string;\r\n monto: number;\r\n formaPago: Enums.FormaPago;\r\n descripcion?: string;\r\n referenciaCompleta?: string;\r\n producto: Enums.TipoProducto;\r\n categoria: Enums.CategoriasDeposito;\r\n origenId: number;\r\n }\r\n\r\n export interface DocumentoTramiteTitulacion {\r\n documentoTramiteTitulacionId: number;\r\n nombre?: string;\r\n entidadDocumentoId: number;\r\n activo: boolean;\r\n categoriaDocumentoTramiteTitulacion: Enums.CategoriaDocumentoTramiteTitulacion;\r\n }\r\n\r\n export interface Estado {\r\n estadoId: number;\r\n descripcion?: string;\r\n paisId: number;\r\n pais: Pais;\r\n }\r\n\r\n export enum EstadoCivil {\r\n SOLTERO = \"SOLTERO\",\r\n CASADO = \"CASADO\",\r\n VIUDO = \"VIUDO\",\r\n DIVORCIADO = \"DIVORCIADO\",\r\n UNIÓN_LIBRE = \"UNIÓN_LIBRE\"\r\n }\r\n\r\n export interface EstadoDocumentoEstudioSocioeconomico {\r\n estadoDocumentoEstudioSocioeconomicoId: number;\r\n nombre?: string;\r\n color?: string;\r\n operador?: string;\r\n diasHabilesPeriodicidad: number;\r\n activo: boolean;\r\n }\r\n\r\n export enum EstatusComplementoCI {\r\n EN_TRÃMITE = \"EN_TRÃMITE\",\r\n PAGADA_POR_EL_CLIENTE = \"PAGADA_POR_EL_CLIENTE\",\r\n DESCONTADA_DEL_MONTO_ADJUDICADO = \"DESCONTADA_DEL_MONTO_ADJUDICADO\",\r\n CONDONACIÓN_DE_PAGO = \"CONDONACIÓN_DE_PAGO\"\r\n }\r\n\r\n export enum EstatusContrato {\r\n ACTIVO = \"ACTIVO\",\r\n CANCELADO = \"CANCELADO\",\r\n RESCINDIDO = \"RESCINDIDO\",\r\n LIQUIDADO = \"LIQUIDADO\",\r\n CANCELACIÓN_EN_TRÃMITE = \"CANCELACIÓN_EN_TRÃMITE\",\r\n SUSPENDIDO = \"SUSPENDIDO\",\r\n CANCELADO_VENTA_FORÃNEA = \"CANCELADO_VENTA_FORÃNEA\",\r\n CANCELADO_DESISTIMIENTO = \"CANCELADO_DESISTIMIENTO\",\r\n CANCELACION_POR_DUPLICIDAD = \"CANCELACION_POR_DUPLICIDAD\",\r\n CANCELACION_PRUEBAS = \"CANCELACION_PRUEBAS\",\r\n FOLIO_REASIGNADO = \"FOLIO_REASIGNADO\",\r\n LIQUIDACIÓN_EN_TRÃMITE = \"LIQUIDACIÓN_EN_TRÃMITE\"\r\n }\r\n\r\n export enum EstatusContratoLegal {\r\n NORMAL = \"NORMAL\",\r\n OBSERVADO = \"OBSERVADO\",\r\n JUICIO_DEMANDADO = \"JUICIO_DEMANDADO\",\r\n PROFECO = \"PROFECO\",\r\n PROMESA_DACIÓN = \"PROMESA_DACIÓN\",\r\n JUICIO_ACTOR = \"JUICIO_ACTOR\",\r\n PRÉSTAMO_BPR = \"PRÉSTAMO_BPR\"\r\n }\r\n\r\n export enum EstatusFolio {\r\n RESERVADO_CORP = \"RESERVADO_CORP\",\r\n DISPONIBLE = \"DISPONIBLE\",\r\n ASIGNADO = \"ASIGNADO\",\r\n RE_ASIGNABLE = \"RE_ASIGNABLE\",\r\n NO_ASIGNABLE = \"NO_ASIGNABLE\",\r\n RESERVADO_ADMON_SUCURSALES = \"RESERVADO_ADMON_SUCURSALES\"\r\n }\r\n\r\n export enum EstatusSolicitud {\r\n EN_PROCESO = \"EN_PROCESO\",\r\n CANCELADA = \"CANCELADA\",\r\n COMITÉ = \"COMITÉ\",\r\n CONVERSIÓN = \"CONVERSIÓN\",\r\n CONTRATACIÓN = \"CONTRATACIÓN\",\r\n FACTURACIÓN = \"FACTURACIÓN\",\r\n CONCRETADA = \"CONCRETADA\",\r\n CANCELADA_VENTA_FORÃNEA = \"CANCELADA_VENTA_FORÃNEA\",\r\n ELIMINADA_POR_DUPLICIDAD = \"ELIMINADA_POR_DUPLICIDAD\",\r\n CANCELADA_POR_PRUEBAS = \"CANCELADA_POR_PRUEBAS\"\r\n }\r\n\r\n export interface EstudioSocioeconomicoDocumento {\r\n documentoTramiteTitulacionId: number;\r\n posicion?: string;\r\n especificacion?: string;\r\n descripcion?: string;\r\n dondeConseguir?: string;\r\n mesesVigencia?: number;\r\n porqueNecesario?: string;\r\n configuracion?: string;\r\n guardado: boolean;\r\n estatus?: number;\r\n comentario?: string;\r\n fechaVigencia?: string;\r\n estado: EstadoDocumentoEstudioSocioeconomico;\r\n created_at?: string;\r\n archivo?: string;\r\n linkArchivo?: string;\r\n tipoArchivo?: string;\r\n documentoTramiteTitulacion: DocumentoTramiteTitulacion;\r\n }\r\n\r\n export enum EtapaOperacionTitulacion {\r\n IDENTIFICACION_DEL_PROYECTO = \"IDENTIFICACION_DEL_PROYECTO\",\r\n INTEGRACION_DE_EXPEDIENTE = \"INTEGRACION_DE_EXPEDIENTE\",\r\n ANÃLISIS = \"ANÃLISIS\",\r\n FIRMA = \"FIRMA\",\r\n FIN = \"FIN\"\r\n }\r\n\r\n export interface FactorActualizacion {\r\n factorActualizacionId: number;\r\n nombreFactor?: string;\r\n tipo: number;\r\n coeficiente?: string;\r\n plans?: Plan[];\r\n }\r\n\r\n export interface Folio {\r\n folioId: number;\r\n grupoId: number;\r\n numeroFolio: number;\r\n estatusFolio: EstatusFolio;\r\n numeroCompleto?: string;\r\n referenciaUnica?: string;\r\n sucursalId?: number;\r\n }\r\n\r\n export interface GarantiaAdministrada {\r\n garantiaAdministradaId: number;\r\n clienteId: number;\r\n cotitularId?: number;\r\n notarioId?: number;\r\n testimonioId?: number;\r\n descripcion?: string;\r\n calle?: string;\r\n numeroExterior?: string;\r\n numeroInterior?: string;\r\n codigoPostalCampoAbierto?: string;\r\n coloniaCampoAbierto?: string;\r\n coloniaId?: number;\r\n ciudadId: number;\r\n estadoId: number;\r\n productoContratado: ProductoContratado;\r\n tipoProducto: TipoProductoGarantia;\r\n valorGarantia: number;\r\n valorGarantiaActualizado: number;\r\n valorTotalContratos: number;\r\n fechaAvaluo?: string;\r\n certificadoDanios: boolean;\r\n calculaSeguroDanios: boolean;\r\n polizaAplicar: TipoPoliza;\r\n valorAsegurado: number;\r\n entregaArchivo: boolean;\r\n numeroEscritura?: string;\r\n activo: boolean;\r\n fechaUltimaActualizacion?: string;\r\n referenciaUnica?: string;\r\n modeloEscritura: number;\r\n alias?: string;\r\n notario: Notario;\r\n cliente: Cliente;\r\n operaciones?: Operacion[];\r\n contratos?: ContratoGarantia[];\r\n garantiaAdministradaDocumentos?: GarantiaAdministradaDocumento[];\r\n colonia: Colonia;\r\n }\r\n\r\n export interface GarantiaAdministradaDocumento {\r\n garantiaAdministradaDocumentoId: number;\r\n garantiaAdministradaId: number;\r\n tipoDocumento: TipoDocumentoTramiteSeguro;\r\n ruta?: string;\r\n fechaCarga: string;\r\n }\r\n\r\n export enum GradoEstudios {\r\n PRIMARIA = \"PRIMARIA\",\r\n SECUNDARIA = \"SECUNDARIA\",\r\n MEDIO_SUPERIOR = \"MEDIO_SUPERIOR\",\r\n TÉCNICO = \"TÉCNICO\",\r\n LICENCIATURA_POSGRADO = \"LICENCIATURA_POSGRADO\",\r\n NINGUNA_DE_LAS_ANTERIORES = \"NINGUNA_DE_LAS_ANTERIORES\"\r\n }\r\n\r\n export enum Identificacion {\r\n INE = \"INE\",\r\n PASAPORTE = \"PASAPORTE\",\r\n CÉDULA_PROFESIONAL = \"CÉDULA_PROFESIONAL\",\r\n LICENCIA_CONDUCIR = \"LICENCIA_CONDUCIR\",\r\n SEPOMEX = \"SEPOMEX\",\r\n DOCUMENTO_EXTRANJERO = \"DOCUMENTO_EXTRANJERO\",\r\n OTROS_NO_AUTORIZADOS_POR_LA_EMPRESA = \"OTROS_NO_AUTORIZADOS_POR_LA_EMPRESA\"\r\n }\r\n\r\n export interface Ingreso {\r\n ingresoId: number;\r\n personaFisicaId?: number;\r\n personaMoralId?: number;\r\n tipoIngreso: TipoIngreso;\r\n empresa?: string;\r\n giroEmpresaId: number;\r\n puestoId: number;\r\n fechaIngreso?: string;\r\n antiguedadMes: number;\r\n antiguedadAnio: number;\r\n montoIngreso: number;\r\n utilidades: number;\r\n confirmadoVia?: string;\r\n confirma?: string;\r\n activo: boolean;\r\n }\r\n\r\n export interface ListaNegra {\r\n listaNegraId: number;\r\n nombre?: string;\r\n propietario: Enums.Propietario;\r\n activo: boolean;\r\n clientes?: Cliente[];\r\n }\r\n\r\n export interface MaterialApoyo {\r\n materialApoyoId: number;\r\n descripcion?: string;\r\n tipo: Enums.TipoMaterialApoyo;\r\n ruta?: string;\r\n tipoMenu: Enums.TipoMenuMaterialApoyo;\r\n }\r\n\r\n export interface Notario {\r\n notarioId: number;\r\n nombreCompleto?: string;\r\n numeroNotaria: number;\r\n estadoId: number;\r\n ciudadId: number;\r\n activo: boolean;\r\n }\r\n\r\n export interface Operacion {\r\n operacionId: number;\r\n folio?: string;\r\n ejecutivo?: string;\r\n fechaPresentacionComite?: string;\r\n tipo: number;\r\n fechaInicioCumplimiento?: string;\r\n fechaFinCumplimiento?: string;\r\n datosOperacion?: string;\r\n montoOperacion?: number;\r\n costoNotarial?: number;\r\n dictamenJuridico?: string;\r\n pronunciamientoEscrituraciones?: string;\r\n activo: boolean;\r\n clienteId?: number;\r\n iIdOperacionEscrituracion?: number;\r\n garantiaAdministradaId?: number;\r\n idSistema?: number;\r\n destinoInmueble?: string;\r\n analista?: string;\r\n tipoCartaInstruccion?: number;\r\n lugarFirma?: string;\r\n fechaFirma?: string;\r\n horaFirma?: System.TimeSpan;\r\n condicionantes?: string;\r\n estatusOperacion: number;\r\n resolucionComite?: number;\r\n fechaResolucion?: string;\r\n votoCalidad: boolean;\r\n usuarioIdVotoCalidad?: number;\r\n candadoQuorum: boolean;\r\n }\r\n\r\n export interface Pais {\r\n paisId: number;\r\n codigo?: string;\r\n descripcion?: string;\r\n gentilicio?: string;\r\n activo: boolean;\r\n descripcionIngles?: string;\r\n gentilicioIngles?: string;\r\n lada?: string;\r\n }\r\n\r\n export enum Parentesco {\r\n CÓNYUGE = \"CÓNYUGE\",\r\n CONCUBINO_A_ = \"CONCUBINO_A_\",\r\n MADRE = \"MADRE\",\r\n PADRE = \"PADRE\",\r\n HERMANO_A_ = \"HERMANO_A_\",\r\n HIJO_A_ = \"HIJO_A_\",\r\n ABUELO_A_ = \"ABUELO_A_\",\r\n NIETO_A_ = \"NIETO_A_\",\r\n TÃO_A_ = \"TÃO_A_\",\r\n SOBRINO_A_ = \"SOBRINO_A_\",\r\n PRIMO_A_ = \"PRIMO_A_\",\r\n OTRO = \"OTRO\",\r\n AMIGO_A = \"AMIGO_A\"\r\n }\r\n\r\n export interface PersonaFisica {\r\n personaFisicaId: number;\r\n nombre?: string;\r\n apellidoPaterno?: string;\r\n apellidoMaterno?: string;\r\n sexo?: Sexo;\r\n fechaNacimiento?: string;\r\n documentoIdentificacion?: Identificacion;\r\n numeroIdentificacion?: string;\r\n paisNacimientoId?: number;\r\n paisNacionalidadId?: number;\r\n rfc?: string;\r\n estadoCivil?: EstadoCivil;\r\n regimenMatrimonial?: RegimenMatrimonial;\r\n conyuge?: string;\r\n profesionId?: number;\r\n otraProfesion?: string;\r\n numeroDependientes?: number;\r\n egreso?: number;\r\n tipoVivienda?: TipoVivienda;\r\n gradoEstudio?: GradoEstudios;\r\n nombreCompleto?: string;\r\n recibirPublicidad: boolean;\r\n compartirDatos: boolean;\r\n facturar: boolean;\r\n curp?: string;\r\n regimenFiscalId?: number;\r\n ubicaciones?: Ubicacion[];\r\n ingresos?: Ingreso[];\r\n puntosContacto?: PuntoContacto[];\r\n empresasRepresentadas?: PersonaMoral[];\r\n profesion: Profesion;\r\n regimenFiscal: RegimenFiscal;\r\n telefonoCasa?: string;\r\n telefonoOficina?: string;\r\n telefonoCelular?: string;\r\n email?: string;\r\n emailOficina?: string;\r\n }\r\n\r\n export interface PersonaMoral {\r\n personaMoralId: number;\r\n razonSocial?: string;\r\n nombreComercial?: string;\r\n fechaConstitucion?: string;\r\n giroEmpresaId: number;\r\n rfc?: string;\r\n calle?: string;\r\n numero?: string;\r\n coloniaId?: number;\r\n email?: string;\r\n facturar: boolean;\r\n regimenFiscalId?: number;\r\n colonia: Colonia;\r\n regimenFiscal: RegimenFiscal;\r\n representantesLegales?: PersonaFisica[];\r\n telefonoOficina?: string;\r\n }\r\n\r\n export interface Plan {\r\n planId: number;\r\n nombre?: string;\r\n producto: number;\r\n capacidad: number;\r\n plazo: number;\r\n factorActualizacionId: number;\r\n montoMinimo: number;\r\n montoMaximo: number;\r\n montoMaximoGrupoCliente: number;\r\n administracion?: string;\r\n factorMoratorio: number;\r\n cuentaPuenteId?: number;\r\n cuentaOperativaId?: number;\r\n cuentaPenalizacionId?: number;\r\n empresa: number;\r\n modeloContratoLegal?: string;\r\n factorActualizacion: FactorActualizacion;\r\n calendarioCortes?: CalendarioCorte[];\r\n }\r\n\r\n export enum ProcedimientoAdjudicacion {\r\n OBLIGATORIA = \"OBLIGATORIA\",\r\n NATURAL = \"NATURAL\",\r\n LISTA_DE_ESPERA = \"LISTA_DE_ESPERA\"\r\n }\r\n\r\n export enum ProductoContratado {\r\n CASA_DEPARTAMENTO = \"CASA_DEPARTAMENTO\",\r\n OFICINA_COMERCIO = \"OFICINA_COMERCIO\",\r\n LOCAL_COMERCIAL = \"LOCAL_COMERCIAL\",\r\n TERRENO = \"TERRENO\",\r\n NO_DEFINIDO = \"NO_DEFINIDO\"\r\n }\r\n\r\n export interface Profesion {\r\n profesionId: number;\r\n descripcion?: string;\r\n }\r\n\r\n export enum ProgramaEspecial {\r\n NORMAL = \"NORMAL\",\r\n PROGRAMA_EXTRANJEROS = \"PROGRAMA_EXTRANJEROS\",\r\n FIRMA_DIGITAL = \"FIRMA_DIGITAL\"\r\n }\r\n\r\n export interface PuntoContacto {\r\n puntoContactoId: number;\r\n personaFisicaId: number;\r\n tipoContacto: TipoContacto;\r\n valor?: string;\r\n extension?: string;\r\n activo: boolean;\r\n paisId?: number;\r\n }\r\n\r\n export interface Recibo {\r\n reciboId: number;\r\n contratoId: number;\r\n tipo: Enums.TipoRecibo;\r\n estatus: Enums.EstatusRecibo;\r\n fechaGeneracion: string;\r\n montoActualizadoContrato: number;\r\n montoTotal: number;\r\n contrato: Contrato;\r\n }\r\n\r\n export interface RegimenFiscal {\r\n regimenFiscalId: number;\r\n nombreRegimen?: string;\r\n tipoCliente: TipoCliente;\r\n }\r\n\r\n export enum RegimenMatrimonial {\r\n SOCIEDAD_CONYUGAL = \"SOCIEDAD_CONYUGAL\",\r\n SEPARACIÓN_DE_BIENES = \"SEPARACIÓN_DE_BIENES\"\r\n }\r\n\r\n export interface Rol {\r\n rolId: number;\r\n nombre?: string;\r\n descripcion?: string;\r\n configuracion?: string;\r\n sucursales?: string;\r\n rolSupervisorId?: number;\r\n horaInicioAtencion?: System.TimeSpan;\r\n horaFinAtencion?: System.TimeSpan;\r\n activo: boolean;\r\n usuarios?: Usuario[];\r\n usuarioRols?: UsuarioRol[];\r\n rolSupervisor: Rol;\r\n }\r\n\r\n export enum Sexo {\r\n HOMBRE = \"HOMBRE\",\r\n MUJER = \"MUJER\"\r\n }\r\n\r\n export interface Solicitud {\r\n solicitudId: number;\r\n clienteId: number;\r\n fechaOperacion?: string;\r\n producto: Enums.TipoProducto;\r\n monto?: number;\r\n planId?: number;\r\n sucursalId: number;\r\n estatusSolicitud: EstatusSolicitud;\r\n tipoVenta: TipoVenta;\r\n configuracionDispersion?: string;\r\n asesor?: string;\r\n asesorRVT?: string;\r\n gerenciaId?: number;\r\n proyectoId?: number;\r\n salesForceOportunidadId?: string;\r\n cliente: Cliente;\r\n plan: Plan;\r\n }\r\n\r\n export interface TipoAclaracion {\r\n tipoAclaracionId: number;\r\n nombre?: string;\r\n }\r\n\r\n export enum TipoCliente {\r\n PERSONA_FÃSICA = \"PERSONA_FÃSICA\",\r\n PERSONA_MORAL = \"PERSONA_MORAL\"\r\n }\r\n\r\n export enum TipoContacto {\r\n TELÉFONO_PARTICULAR = \"TELÉFONO_PARTICULAR\",\r\n TELÉFONO_OFICINA = \"TELÉFONO_OFICINA\",\r\n TELÉFONO_CELULAR = \"TELÉFONO_CELULAR\",\r\n EMAIL_PARTICULAR = \"EMAIL_PARTICULAR\",\r\n EMAIL_OFICINA = \"EMAIL_OFICINA\",\r\n TELÉFONO_FAX_RADIOLOCALIZADOR = \"TELÉFONO_FAX_RADIOLOCALIZADOR\"\r\n }\r\n\r\n export enum TipoDocumentoTramiteSeguro {\r\n CONSENTIMIENTO_MÉDICO = \"CONSENTIMIENTO_MÉDICO\",\r\n DOCUMENTOS_ANEXOS = \"DOCUMENTOS_ANEXOS\",\r\n PASE_MÉDICO = \"PASE_MÉDICO\",\r\n CERTIFICADO_SEGURO_VIDA = \"CERTIFICADO_SEGURO_VIDA\",\r\n CERTIFICADO_SEGURO_DAÑOS = \"CERTIFICADO_SEGURO_DAÑOS\"\r\n }\r\n\r\n export enum TipoFondeo {\r\n NAFIN = \"NAFIN\",\r\n BANCOMER = \"BANCOMER\",\r\n HIR_CASA = \"HIR_CASA\",\r\n BANCOMER_II_D1 = \"BANCOMER_II_D1\",\r\n BANCOMER_II_D2 = \"BANCOMER_II_D2\",\r\n BANCOMER_II_D3 = \"BANCOMER_II_D3\",\r\n NAFIN_II_D1 = \"NAFIN_II_D1\",\r\n NAFIN_II_D2 = \"NAFIN_II_D2\",\r\n NAFIN_II_D3 = \"NAFIN_II_D3\",\r\n NAFIN_II_D4 = \"NAFIN_II_D4\",\r\n BANCOMER_III_D1 = \"BANCOMER_III_D1\",\r\n BANCOMER_III_D2 = \"BANCOMER_III_D2\",\r\n BANCOMER_III_D3 = \"BANCOMER_III_D3\",\r\n BANCOMER_III_D4 = \"BANCOMER_III_D4\",\r\n BANCOMER_IV_D1 = \"BANCOMER_IV_D1\",\r\n BANCOMER_IV_D2 = \"BANCOMER_IV_D2\",\r\n BX_MAS_D1 = \"BX_MAS_D1\",\r\n BANCOMER_IV_D3 = \"BANCOMER_IV_D3\",\r\n BANCOMER_IV_D4 = \"BANCOMER_IV_D4\",\r\n BX_MAS_D2 = \"BX_MAS_D2\",\r\n BX_MAS_D3 = \"BX_MAS_D3\",\r\n BX_MAS_D4 = \"BX_MAS_D4\",\r\n BX_MAS_II_D1 = \"BX_MAS_II_D1\",\r\n BAJIO_D1 = \"BAJIO_D1\",\r\n BANCOMER_V_D1 = \"BANCOMER_V_D1\",\r\n BAJIO_D2 = \"BAJIO_D2\",\r\n BAJIO_D3 = \"BAJIO_D3\",\r\n BANCOMER_V_D2 = \"BANCOMER_V_D2\",\r\n BAJIO_D4 = \"BAJIO_D4\",\r\n BANCOMER_V_D3 = \"BANCOMER_V_D3\",\r\n BANCOMER_V_D4 = \"BANCOMER_V_D4\",\r\n BANCOMER_V_D5 = \"BANCOMER_V_D5\",\r\n BANCOMER_V_D6 = \"BANCOMER_V_D6\",\r\n SINDICADO_D1 = \"SINDICADO_D1\",\r\n SINDICADO_D2 = \"SINDICADO_D2\",\r\n SINDICADO_D3 = \"SINDICADO_D3\",\r\n SINDICADO_D4 = \"SINDICADO_D4\",\r\n SANTANDER_D1 = \"SANTANDER_D1\",\r\n SANTANDER_D2 = \"SANTANDER_D2\",\r\n SANTANDER_D3 = \"SANTANDER_D3\",\r\n SANTANDER_D4 = \"SANTANDER_D4\",\r\n HIR_CASA_F_3317 = \"HIR_CASA_F_3317\",\r\n BURSATILIZADA_I = \"BURSATILIZADA_I\",\r\n BURSATILIZADA_II = \"BURSATILIZADA_II\",\r\n PRÉSTAMO_BPR = \"PRÉSTAMO_BPR\"\r\n }\r\n\r\n export enum TipoIngreso {\r\n COMPROBABLE = \"COMPROBABLE\",\r\n NO_COMPROBABLE = \"NO_COMPROBABLE\"\r\n }\r\n\r\n export enum TipoPension {\r\n PENSION_POR_INCAPACIDAD_PARCIAL_PERMANENTE = \"PENSION_POR_INCAPACIDAD_PARCIAL_PERMANENTE\",\r\n PENSION_DE_VIUDEZ_O_CONCUBINATO_A_CAUSA_DE_UN_ACCIDENTE_DE_TRABAJO = \"PENSION_DE_VIUDEZ_O_CONCUBINATO_A_CAUSA_DE_UN_ACCIDENTE_DE_TRABAJO\",\r\n PENSION_DE_ORFANDAD_A_CAUSA_DE_UN_ACCIDENTE_DE_TRABAJO = \"PENSION_DE_ORFANDAD_A_CAUSA_DE_UN_ACCIDENTE_DE_TRABAJO\",\r\n PENSION_POR_CESANTIA_EN_EDAD_AVANZADA = \"PENSION_POR_CESANTIA_EN_EDAD_AVANZADA\",\r\n PENSION_POR_VEJEZ = \"PENSION_POR_VEJEZ\",\r\n PENSION_POR_INVALIDEZ = \"PENSION_POR_INVALIDEZ\",\r\n PENSION_POR_RETIRO = \"PENSION_POR_RETIRO\"\r\n }\r\n\r\n export enum TipoPoliza {\r\n SIN_DEFINIR = \"SIN_DEFINIR\",\r\n VALOR_DE_LOS_CONTRATOS = \"VALOR_DE_LOS_CONTRATOS\",\r\n VALOR_DEL_BIEN = \"VALOR_DEL_BIEN\"\r\n }\r\n\r\n export enum TipoProductoGarantia {\r\n COMPRA_VENTA_DE_CASA_O_DEPARTAMENTO = \"COMPRA_VENTA_DE_CASA_O_DEPARTAMENTO\",\r\n COMPRA_VENTA_DE_LOCAL_COMERCIAL = \"COMPRA_VENTA_DE_LOCAL_COMERCIAL\",\r\n COMPRA_VENTA_Y_REMODELACIÓN = \"COMPRA_VENTA_Y_REMODELACIÓN\",\r\n COMPRA_DE_TERRENO_Y_CONSTRUCCION = \"COMPRA_DE_TERRENO_Y_CONSTRUCCION\",\r\n COMPRA_DE_TERRENO_SIN_CONSTRUCCION = \"COMPRA_DE_TERRENO_SIN_CONSTRUCCION\",\r\n CONSTRUCCION = \"CONSTRUCCION\",\r\n REMODELACION = \"REMODELACION\",\r\n NO_DEFINIDO = \"NO_DEFINIDO\"\r\n }\r\n\r\n export enum TipoProyecto {\r\n COMPRA_DE_CASA_NUEVA = \"COMPRA_DE_CASA_NUEVA\",\r\n COMPRA_DE_CASA_USADA = \"COMPRA_DE_CASA_USADA\",\r\n COMPRA_DE_DEPARTAMENTO_NUEVO = \"COMPRA_DE_DEPARTAMENTO_NUEVO\",\r\n COMPRA_DE_DEPARTAMENTO_USADO = \"COMPRA_DE_DEPARTAMENTO_USADO\",\r\n COMPRA_DE_LOCAL_COMERCIAL = \"COMPRA_DE_LOCAL_COMERCIAL\",\r\n COMPRA_DE_TERRENO = \"COMPRA_DE_TERRENO\",\r\n REMODELACION = \"REMODELACION\",\r\n CONSTRUCCION = \"CONSTRUCCION\"\r\n }\r\n\r\n export enum TipoUbicacion {\r\n PARTICULAR = \"PARTICULAR\",\r\n OFICINA = \"OFICINA\",\r\n FISCAL = \"FISCAL\"\r\n }\r\n\r\n export enum TipoUbicacionGeografica {\r\n LOCAL = \"LOCAL\",\r\n EXTRANJERA = \"EXTRANJERA\"\r\n }\r\n\r\n export enum TipoVenta {\r\n NORMAL = \"NORMAL\",\r\n PENDIENTE = \"PENDIENTE\",\r\n FORÃNEA = \"FORÃNEA\"\r\n }\r\n\r\n export enum TipoVivienda {\r\n PROPIA = \"PROPIA\",\r\n RENTADA = \"RENTADA\",\r\n FAMILIAR = \"FAMILIAR\",\r\n PROPIA_HIPOTECADA = \"PROPIA_HIPOTECADA\"\r\n }\r\n\r\n export interface Transaccion {\r\n transaccionId: number;\r\n depositoId: number;\r\n concepto: Enums.ConceptoTransaccion;\r\n montoTotal: number;\r\n fechaAplicacion: string;\r\n fechaPago: string;\r\n etapa: number;\r\n montoActualizado: number;\r\n contabilizado: boolean;\r\n fechaContabilizado?: string;\r\n aportado: boolean;\r\n fechaAportado?: string;\r\n facturado: boolean;\r\n fechaFacturado?: string;\r\n reversado: boolean;\r\n transaccionIdReversada?: number;\r\n fondeo: TipoFondeo;\r\n segmentacion: Enums.Segmentacion;\r\n usuarioAplicacion?: string;\r\n origen: Enums.OrigenTransaccion;\r\n deposito: Deposito;\r\n transaccionReversada: Transaccion;\r\n }\r\n\r\n export interface TransaccionAnticipo {\r\n transaccionId: number;\r\n depositoId: number;\r\n concepto: Enums.ConceptoTransaccion;\r\n montoTotal: number;\r\n fechaAplicacion: string;\r\n fechaPago: string;\r\n etapa: number;\r\n montoActualizado: number;\r\n contabilizado: boolean;\r\n fechaContabilizado?: string;\r\n aportado: boolean;\r\n fechaAportado?: string;\r\n facturado: boolean;\r\n fechaFacturado?: string;\r\n reversado: boolean;\r\n transaccionIdReversada?: number;\r\n fondeo: TipoFondeo;\r\n segmentacion: Enums.Segmentacion;\r\n usuarioAplicacion?: string;\r\n origen: Enums.OrigenTransaccion;\r\n deposito: Deposito;\r\n transaccionReversada: Transaccion;\r\n contratoId: number;\r\n aportacionCapital: number;\r\n gastoAdministracion: number;\r\n ivaGastoAdministracion: number;\r\n remanente: number;\r\n cuotasCubiertas: number;\r\n ladrillosObtenidos: number;\r\n condicionLadrillosObtenidos: Enums.CondicionLadrillo;\r\n contrato: Contrato;\r\n }\r\n\r\n export interface Ubicacion {\r\n ubicacionId: number;\r\n personaFisicaId: number;\r\n tipoUbicacion: TipoUbicacion;\r\n ubicacionGeografica: TipoUbicacionGeografica;\r\n calle?: string;\r\n numero?: string;\r\n tiempoResidencia?: string;\r\n domicilioFactura: boolean;\r\n activo: boolean;\r\n codigoPostalNombre?: string;\r\n calleNumero?: string;\r\n coloniaNombre?: string;\r\n ciudadNombre?: string;\r\n estadoNombre?: string;\r\n }\r\n\r\n export interface UbicacionLocal {\r\n ubicacionId: number;\r\n personaFisicaId: number;\r\n tipoUbicacion: TipoUbicacion;\r\n ubicacionGeografica: TipoUbicacionGeografica;\r\n calle?: string;\r\n numero?: string;\r\n tiempoResidencia?: string;\r\n domicilioFactura: boolean;\r\n activo: boolean;\r\n calleNumero?: string;\r\n coloniaId: number;\r\n colonia: Colonia;\r\n pais: Pais;\r\n codigoPostalNombre?: string;\r\n coloniaNombre?: string;\r\n ciudadNombre?: string;\r\n estadoNombre?: string;\r\n }\r\n\r\n export interface Usuario {\r\n usuarioId: number;\r\n colaboradorId: number;\r\n activo: boolean;\r\n roles?: Rol[];\r\n usuarioRols?: UsuarioRol[];\r\n }\r\n\r\n export interface UsuarioRol {\r\n usuarioId: number;\r\n usuario: Usuario;\r\n rolId: number;\r\n rol: Rol;\r\n }\r\n\r\n export interface vwContratos {\r\n entidad?: string;\r\n contratoId?: number;\r\n grupoId?: number;\r\n numeroGrupo?: number;\r\n numeroCompleto?: string;\r\n referenciaUnica?: string;\r\n numeroFolio?: number;\r\n solicitudId?: number;\r\n folioId?: number;\r\n estatus?: number;\r\n estatusLegal?: number;\r\n fondeo?: number;\r\n montoContratado?: number;\r\n pagoAutomatico?: boolean;\r\n poderNotarialId?: number;\r\n fechaLiquidacion?: string;\r\n etapa?: number;\r\n montoActualizado?: number;\r\n montoBasePromedio?: number;\r\n envioEstadoCuenta?: number;\r\n estadoCuentaDigital?: boolean;\r\n participaRemanente?: boolean;\r\n actualizacionCalendarioCorteId?: number;\r\n fechaIngresoListaEspera?: string;\r\n fechaPrimerVencimiento?: string;\r\n clienteId?: number;\r\n fechaOperacion?: string;\r\n montoOperacion?: number;\r\n sucursalId?: number;\r\n estatusSolicitud?: number;\r\n tipoVenta?: number;\r\n firmaDigital?: number;\r\n configuracionDispersion?: string;\r\n asesor?: string;\r\n asesorRVT?: string;\r\n gerenciaId?: number;\r\n proyectoId?: number;\r\n salesForceOportunidadId?: number;\r\n servicioContratado?: number;\r\n productoContratado?: number;\r\n porcentajeDescuentoInscripcion?: number;\r\n porcentajeDescuentoComision?: number;\r\n seguroVida?: number;\r\n preventa?: number;\r\n numeroUnidadesComprar?: number;\r\n proyectoInmobiliarioId?: number;\r\n tipoViviendaPreventa?: number;\r\n plazoEfectivo?: number;\r\n destinoPrestamo?: string;\r\n lugarEntregaChequeId?: number;\r\n planId?: number;\r\n nombrePlan?: string;\r\n producto?: number;\r\n capacidad?: number;\r\n plazo?: number;\r\n factorActualizacionId?: number;\r\n montoMinimo?: number;\r\n montoMaximo?: number;\r\n montoMaximoGrupoCliente?: number;\r\n administracion?: string;\r\n factorMoratorio?: number;\r\n empresa?: number;\r\n modeloContratoLegal?: string;\r\n porcentajeSeguro?: number;\r\n numeroCuotaPagadaIngresoListaEspera?: number;\r\n numeroMensualidadSuspende?: number;\r\n porcentajeCuotaInscripcion?: number;\r\n porcentajeSegundaCuotaInscripcion?: number;\r\n porcentajeCesionDerechos?: number;\r\n porcentajeGastoAdministracionIntegrante?: number;\r\n porcentajeGastoAdministracionAdjudicatario?: number;\r\n porcentajeGastoAdministracionAdjudicado?: number;\r\n porcentajeGastoAdministracionAnticipadoIntegrante?: number;\r\n porcentajeGastoAdministracionAnticipadoAdjudicatario?: number;\r\n porcentajeGastoAdministracionAnticipadoAdjudicado?: number;\r\n porcentajePromocionApertura?: number;\r\n cuotasPenalizacionCancelacion?: number;\r\n factorRemanenteVoluntario?: number;\r\n numeroRecibosGeneraGastoCobranza?: number;\r\n porcentajeGastoCobranza?: number;\r\n numeroCuotaPagadaAdjudicacionObligatoria?: number;\r\n factorCalculoMensualidadIntegrante?: number;\r\n factorCalculoMensualidadAdjudicatarioSinRemanente?: number;\r\n factorCalculoMensualidadAdjudicatarioConRemanente?: number;\r\n montoDisponible?: number;\r\n estadoProcesal?: number;\r\n candadoTransacciones?: boolean;\r\n contrato: Contrato;\r\n }\r\n }\r\n}\r\n\r\nexport namespace Microsoft {\r\n export namespace AspNetCore {\r\n export namespace Identity {\r\n export interface IdentityError {\r\n code?: string;\r\n description?: string;\r\n }\r\n }\r\n }\r\n}\r\n","import * as Vue from 'vue'\n\nvar isVue2 = false\nvar isVue3 = true\nvar Vue2 = undefined\n\nfunction install() {}\n\nexport function set(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexport function del(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexport * from 'vue'\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n}\n","/*!\n * pinia v2.0.23\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, onUnmounted, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\r\n * setActivePinia must be called to handle SSR at the top of functions like\r\n * `fetch`, `setup`, `serverPrefetch` and others\r\n */\r\nlet activePinia;\r\n/**\r\n * Sets or unsets the active pinia. Used in SSR and internally when calling\r\n * actions and getters\r\n *\r\n * @param pinia - Pinia instance\r\n */\r\nconst setActivePinia = (pinia) => (activePinia = pinia);\r\n/**\r\n * Get the currently active pinia if there is any.\r\n */\r\nconst getActivePinia = () => (getCurrentInstance() && inject(piniaSymbol)) || activePinia;\r\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no) {\r\n return (o &&\r\n typeof o === 'object' &&\r\n Object.prototype.toString.call(o) === '[object Object]' &&\r\n typeof o.toJSON !== 'function');\r\n}\r\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\r\n// TODO: can we change these to numbers?\r\n/**\r\n * Possible types for SubscriptionCallback\r\n */\r\nvar MutationType;\r\n(function (MutationType) {\r\n /**\r\n * Direct mutation of the state:\r\n *\r\n * - `store.name = 'new name'`\r\n * - `store.$state.name = 'new name'`\r\n * - `store.list.push('new item')`\r\n */\r\n MutationType[\"direct\"] = \"direct\";\r\n /**\r\n * Mutated the state with `$patch` and an object\r\n *\r\n * - `store.$patch({ name: 'newName' })`\r\n */\r\n MutationType[\"patchObject\"] = \"patch object\";\r\n /**\r\n * Mutated the state with `$patch` and a function\r\n *\r\n * - `store.$patch(state => state.name = 'newName')`\r\n */\r\n MutationType[\"patchFunction\"] = \"patch function\";\r\n // maybe reset? for $state = {} and $reset\r\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\r\n/**\r\n * Should we add the devtools plugins.\r\n * - only if dev mode or forced through the prod devtools flag\r\n * - not in test\r\n * - only if window exists (could change in the future)\r\n */\r\nconst USE_DEVTOOLS = ((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test') && IS_CLIENT;\n\n/*\r\n * FileSaver.js A saveAs() FileSaver implementation.\r\n *\r\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\r\n * Morote.\r\n *\r\n * License : MIT\r\n */\r\n// The one and only way of getting global scope in all environments\r\n// https://stackoverflow.com/q/3277182/1008999\r\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\r\n ? window\r\n : typeof self === 'object' && self.self === self\r\n ? self\r\n : typeof global === 'object' && global.global === global\r\n ? global\r\n : typeof globalThis === 'object'\r\n ? globalThis\r\n : { HTMLElement: null })();\r\nfunction bom(blob, { autoBom = false } = {}) {\r\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\r\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\r\n if (autoBom &&\r\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\r\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\r\n }\r\n return blob;\r\n}\r\nfunction download(url, name, opts) {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', url);\r\n xhr.responseType = 'blob';\r\n xhr.onload = function () {\r\n saveAs(xhr.response, name, opts);\r\n };\r\n xhr.onerror = function () {\r\n console.error('could not download file');\r\n };\r\n xhr.send();\r\n}\r\nfunction corsEnabled(url) {\r\n const xhr = new XMLHttpRequest();\r\n // use sync to avoid popup blocker\r\n xhr.open('HEAD', url, false);\r\n try {\r\n xhr.send();\r\n }\r\n catch (e) { }\r\n return xhr.status >= 200 && xhr.status <= 299;\r\n}\r\n// `a.click()` doesn't work for all browsers (#465)\r\nfunction click(node) {\r\n try {\r\n node.dispatchEvent(new MouseEvent('click'));\r\n }\r\n catch (e) {\r\n const evt = document.createEvent('MouseEvents');\r\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n node.dispatchEvent(evt);\r\n }\r\n}\r\nconst _navigator = \r\n typeof navigator === 'object' ? navigator : { userAgent: '' };\r\n// Detect WebView inside a native macOS app by ruling out all browsers\r\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\r\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\r\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\r\n /AppleWebKit/.test(_navigator.userAgent) &&\r\n !/Safari/.test(_navigator.userAgent))();\r\nconst saveAs = !IS_CLIENT\r\n ? () => { } // noop\r\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\r\n typeof HTMLAnchorElement !== 'undefined' &&\r\n 'download' in HTMLAnchorElement.prototype &&\r\n !isMacOSWebView\r\n ? downloadSaveAs\r\n : // Use msSaveOrOpenBlob as a second approach\r\n 'msSaveOrOpenBlob' in _navigator\r\n ? msSaveAs\r\n : // Fallback to using FileReader and a popup\r\n fileSaverSaveAs;\r\nfunction downloadSaveAs(blob, name = 'download', opts) {\r\n const a = document.createElement('a');\r\n a.download = name;\r\n a.rel = 'noopener'; // tabnabbing\r\n // TODO: detect chrome extensions & packaged apps\r\n // a.target = '_blank'\r\n if (typeof blob === 'string') {\r\n // Support regular links\r\n a.href = blob;\r\n if (a.origin !== location.origin) {\r\n if (corsEnabled(a.href)) {\r\n download(blob, name, opts);\r\n }\r\n else {\r\n a.target = '_blank';\r\n click(a);\r\n }\r\n }\r\n else {\r\n click(a);\r\n }\r\n }\r\n else {\r\n // Support blobs\r\n a.href = URL.createObjectURL(blob);\r\n setTimeout(function () {\r\n URL.revokeObjectURL(a.href);\r\n }, 4e4); // 40s\r\n setTimeout(function () {\r\n click(a);\r\n }, 0);\r\n }\r\n}\r\nfunction msSaveAs(blob, name = 'download', opts) {\r\n if (typeof blob === 'string') {\r\n if (corsEnabled(blob)) {\r\n download(blob, name, opts);\r\n }\r\n else {\r\n const a = document.createElement('a');\r\n a.href = blob;\r\n a.target = '_blank';\r\n setTimeout(function () {\r\n click(a);\r\n });\r\n }\r\n }\r\n else {\r\n // @ts-ignore: works on windows\r\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\r\n }\r\n}\r\nfunction fileSaverSaveAs(blob, name, opts, popup) {\r\n // Open a popup immediately do go around popup blocker\r\n // Mostly only available on user interaction and the fileReader is async so...\r\n popup = popup || open('', '_blank');\r\n if (popup) {\r\n popup.document.title = popup.document.body.innerText = 'downloading...';\r\n }\r\n if (typeof blob === 'string')\r\n return download(blob, name, opts);\r\n const force = blob.type === 'application/octet-stream';\r\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\r\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\r\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\r\n typeof FileReader !== 'undefined') {\r\n // Safari doesn't allow downloading of blob URLs\r\n const reader = new FileReader();\r\n reader.onloadend = function () {\r\n let url = reader.result;\r\n if (typeof url !== 'string') {\r\n popup = null;\r\n throw new Error('Wrong reader.result type');\r\n }\r\n url = isChromeIOS\r\n ? url\r\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\r\n if (popup) {\r\n popup.location.href = url;\r\n }\r\n else {\r\n location.assign(url);\r\n }\r\n popup = null; // reverse-tabnabbing #460\r\n };\r\n reader.readAsDataURL(blob);\r\n }\r\n else {\r\n const url = URL.createObjectURL(blob);\r\n if (popup)\r\n popup.location.assign(url);\r\n else\r\n location.href = url;\r\n popup = null; // reverse-tabnabbing #460\r\n setTimeout(function () {\r\n URL.revokeObjectURL(url);\r\n }, 4e4); // 40s\r\n }\r\n}\n\n/**\r\n * Shows a toast or console.log\r\n *\r\n * @param message - message to log\r\n * @param type - different color of the tooltip\r\n */\r\nfunction toastMessage(message, type) {\r\n const piniaMessage = 'ðŸ ' + message;\r\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\r\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\r\n }\r\n else if (type === 'error') {\r\n console.error(piniaMessage);\r\n }\r\n else if (type === 'warn') {\r\n console.warn(piniaMessage);\r\n }\r\n else {\r\n console.log(piniaMessage);\r\n }\r\n}\r\nfunction isPinia(o) {\r\n return '_a' in o && 'install' in o;\r\n}\n\nfunction checkClipboardAccess() {\r\n if (!('clipboard' in navigator)) {\r\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\r\n return true;\r\n }\r\n}\r\nfunction checkNotFocusedError(error) {\r\n if (error instanceof Error &&\r\n error.message.toLowerCase().includes('document is not focused')) {\r\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\r\n return true;\r\n }\r\n return false;\r\n}\r\nasync function actionGlobalCopyState(pinia) {\r\n if (checkClipboardAccess())\r\n return;\r\n try {\r\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\r\n toastMessage('Global state copied to clipboard.');\r\n }\r\n catch (error) {\r\n if (checkNotFocusedError(error))\r\n return;\r\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nasync function actionGlobalPasteState(pinia) {\r\n if (checkClipboardAccess())\r\n return;\r\n try {\r\n pinia.state.value = JSON.parse(await navigator.clipboard.readText());\r\n toastMessage('Global state pasted from clipboard.');\r\n }\r\n catch (error) {\r\n if (checkNotFocusedError(error))\r\n return;\r\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nasync function actionGlobalSaveState(pinia) {\r\n try {\r\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\r\n type: 'text/plain;charset=utf-8',\r\n }), 'pinia-state.json');\r\n }\r\n catch (error) {\r\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nlet fileInput;\r\nfunction getFileOpener() {\r\n if (!fileInput) {\r\n fileInput = document.createElement('input');\r\n fileInput.type = 'file';\r\n fileInput.accept = '.json';\r\n }\r\n function openFile() {\r\n return new Promise((resolve, reject) => {\r\n fileInput.onchange = async () => {\r\n const files = fileInput.files;\r\n if (!files)\r\n return resolve(null);\r\n const file = files.item(0);\r\n if (!file)\r\n return resolve(null);\r\n return resolve({ text: await file.text(), file });\r\n };\r\n // @ts-ignore: TODO: changed from 4.3 to 4.4\r\n fileInput.oncancel = () => resolve(null);\r\n fileInput.onerror = reject;\r\n fileInput.click();\r\n });\r\n }\r\n return openFile;\r\n}\r\nasync function actionGlobalOpenStateFile(pinia) {\r\n try {\r\n const open = await getFileOpener();\r\n const result = await open();\r\n if (!result)\r\n return;\r\n const { text, file } = result;\r\n pinia.state.value = JSON.parse(text);\r\n toastMessage(`Global state imported from \"${file.name}\".`);\r\n }\r\n catch (error) {\r\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\n\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\nconst PINIA_ROOT_LABEL = 'ðŸ Pinia (root)';\r\nconst PINIA_ROOT_ID = '_root';\r\nfunction formatStoreForInspectorTree(store) {\r\n return isPinia(store)\r\n ? {\r\n id: PINIA_ROOT_ID,\r\n label: PINIA_ROOT_LABEL,\r\n }\r\n : {\r\n id: store.$id,\r\n label: store.$id,\r\n };\r\n}\r\nfunction formatStoreForInspectorState(store) {\r\n if (isPinia(store)) {\r\n const storeNames = Array.from(store._s.keys());\r\n const storeMap = store._s;\r\n const state = {\r\n state: storeNames.map((storeId) => ({\r\n editable: true,\r\n key: storeId,\r\n value: store.state.value[storeId],\r\n })),\r\n getters: storeNames\r\n .filter((id) => storeMap.get(id)._getters)\r\n .map((id) => {\r\n const store = storeMap.get(id);\r\n return {\r\n editable: false,\r\n key: id,\r\n value: store._getters.reduce((getters, key) => {\r\n getters[key] = store[key];\r\n return getters;\r\n }, {}),\r\n };\r\n }),\r\n };\r\n return state;\r\n }\r\n const state = {\r\n state: Object.keys(store.$state).map((key) => ({\r\n editable: true,\r\n key,\r\n value: store.$state[key],\r\n })),\r\n };\r\n // avoid adding empty getters\r\n if (store._getters && store._getters.length) {\r\n state.getters = store._getters.map((getterName) => ({\r\n editable: false,\r\n key: getterName,\r\n value: store[getterName],\r\n }));\r\n }\r\n if (store._customProperties.size) {\r\n state.customProperties = Array.from(store._customProperties).map((key) => ({\r\n editable: true,\r\n key,\r\n value: store[key],\r\n }));\r\n }\r\n return state;\r\n}\r\nfunction formatEventData(events) {\r\n if (!events)\r\n return {};\r\n if (Array.isArray(events)) {\r\n // TODO: handle add and delete for arrays and objects\r\n return events.reduce((data, event) => {\r\n data.keys.push(event.key);\r\n data.operations.push(event.type);\r\n data.oldValue[event.key] = event.oldValue;\r\n data.newValue[event.key] = event.newValue;\r\n return data;\r\n }, {\r\n oldValue: {},\r\n keys: [],\r\n operations: [],\r\n newValue: {},\r\n });\r\n }\r\n else {\r\n return {\r\n operation: formatDisplay(events.type),\r\n key: formatDisplay(events.key),\r\n oldValue: events.oldValue,\r\n newValue: events.newValue,\r\n };\r\n }\r\n}\r\nfunction formatMutationType(type) {\r\n switch (type) {\r\n case MutationType.direct:\r\n return 'mutation';\r\n case MutationType.patchFunction:\r\n return '$patch';\r\n case MutationType.patchObject:\r\n return '$patch';\r\n default:\r\n return 'unknown';\r\n }\r\n}\n\n// timeline can be paused when directly changing the state\r\nlet isTimelineActive = true;\r\nconst componentStateTypes = [];\r\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\r\nconst INSPECTOR_ID = 'pinia';\r\n/**\r\n * Gets the displayed name of a store in devtools\r\n *\r\n * @param id - id of the store\r\n * @returns a formatted string\r\n */\r\nconst getStoreType = (id) => 'ðŸ ' + id;\r\n/**\r\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\r\n * as soon as it is added to the application.\r\n *\r\n * @param app - Vue application\r\n * @param pinia - pinia instance\r\n */\r\nfunction registerPiniaDevtools(app, pinia) {\r\n setupDevtoolsPlugin({\r\n id: 'dev.esm.pinia',\r\n label: 'Pinia ðŸ',\r\n logo: 'https://pinia.vuejs.org/logo.svg',\r\n packageName: 'pinia',\r\n homepage: 'https://pinia.vuejs.org',\r\n componentStateTypes,\r\n app,\r\n }, (api) => {\r\n if (typeof api.now !== 'function') {\r\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n }\r\n api.addTimelineLayer({\r\n id: MUTATIONS_LAYER_ID,\r\n label: `Pinia ðŸ`,\r\n color: 0xe5df88,\r\n });\r\n api.addInspector({\r\n id: INSPECTOR_ID,\r\n label: 'Pinia ðŸ',\r\n icon: 'storage',\r\n treeFilterPlaceholder: 'Search stores',\r\n actions: [\r\n {\r\n icon: 'content_copy',\r\n action: () => {\r\n actionGlobalCopyState(pinia);\r\n },\r\n tooltip: 'Serialize and copy the state',\r\n },\r\n {\r\n icon: 'content_paste',\r\n action: async () => {\r\n await actionGlobalPasteState(pinia);\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n },\r\n tooltip: 'Replace the state with the content of your clipboard',\r\n },\r\n {\r\n icon: 'save',\r\n action: () => {\r\n actionGlobalSaveState(pinia);\r\n },\r\n tooltip: 'Save the state as a JSON file',\r\n },\r\n {\r\n icon: 'folder_open',\r\n action: async () => {\r\n await actionGlobalOpenStateFile(pinia);\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n },\r\n tooltip: 'Import the state from a JSON file',\r\n },\r\n ],\r\n nodeActions: [\r\n {\r\n icon: 'restore',\r\n tooltip: 'Reset the state (option store only)',\r\n action: (nodeId) => {\r\n const store = pinia._s.get(nodeId);\r\n if (!store) {\r\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\r\n }\r\n else if (!store._isOptionsAPI) {\r\n toastMessage(`Cannot reset \"${nodeId}\" store because it's a setup store.`, 'warn');\r\n }\r\n else {\r\n store.$reset();\r\n toastMessage(`Store \"${nodeId}\" reset.`);\r\n }\r\n },\r\n },\r\n ],\r\n });\r\n api.on.inspectComponent((payload, ctx) => {\r\n const proxy = (payload.componentInstance &&\r\n payload.componentInstance.proxy);\r\n if (proxy && proxy._pStores) {\r\n const piniaStores = payload.componentInstance.proxy._pStores;\r\n Object.values(piniaStores).forEach((store) => {\r\n payload.instanceData.state.push({\r\n type: getStoreType(store.$id),\r\n key: 'state',\r\n editable: true,\r\n value: store._isOptionsAPI\r\n ? {\r\n _custom: {\r\n value: toRaw(store.$state),\r\n actions: [\r\n {\r\n icon: 'restore',\r\n tooltip: 'Reset the state of this store',\r\n action: () => store.$reset(),\r\n },\r\n ],\r\n },\r\n }\r\n : // NOTE: workaround to unwrap transferred refs\r\n Object.keys(store.$state).reduce((state, key) => {\r\n state[key] = store.$state[key];\r\n return state;\r\n }, {}),\r\n });\r\n if (store._getters && store._getters.length) {\r\n payload.instanceData.state.push({\r\n type: getStoreType(store.$id),\r\n key: 'getters',\r\n editable: false,\r\n value: store._getters.reduce((getters, key) => {\r\n try {\r\n getters[key] = store[key];\r\n }\r\n catch (error) {\r\n // @ts-expect-error: we just want to show it in devtools\r\n getters[key] = error;\r\n }\r\n return getters;\r\n }, {}),\r\n });\r\n }\r\n });\r\n }\r\n });\r\n api.on.getInspectorTree((payload) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n let stores = [pinia];\r\n stores = stores.concat(Array.from(pinia._s.values()));\r\n payload.rootNodes = (payload.filter\r\n ? stores.filter((store) => '$id' in store\r\n ? store.$id\r\n .toLowerCase()\r\n .includes(payload.filter.toLowerCase())\r\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\r\n : stores).map(formatStoreForInspectorTree);\r\n }\r\n });\r\n api.on.getInspectorState((payload) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n ? pinia\r\n : pinia._s.get(payload.nodeId);\r\n if (!inspectedStore) {\r\n // this could be the selected store restored for a different project\r\n // so it's better not to say anything here\r\n return;\r\n }\r\n if (inspectedStore) {\r\n payload.state = formatStoreForInspectorState(inspectedStore);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState((payload, ctx) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n ? pinia\r\n : pinia._s.get(payload.nodeId);\r\n if (!inspectedStore) {\r\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\r\n }\r\n const { path } = payload;\r\n if (!isPinia(inspectedStore)) {\r\n // access only the state\r\n if (path.length !== 1 ||\r\n !inspectedStore._customProperties.has(path[0]) ||\r\n path[0] in inspectedStore.$state) {\r\n path.unshift('$state');\r\n }\r\n }\r\n else {\r\n // Root access, we can omit the `.value` because the devtools API does it for us\r\n path.unshift('state');\r\n }\r\n isTimelineActive = false;\r\n payload.set(inspectedStore, path, payload.state.value);\r\n isTimelineActive = true;\r\n }\r\n });\r\n api.on.editComponentState((payload) => {\r\n if (payload.type.startsWith('ðŸ')) {\r\n const storeId = payload.type.replace(/^ðŸ\\s*/, '');\r\n const store = pinia._s.get(storeId);\r\n if (!store) {\r\n return toastMessage(`store \"${storeId}\" not found`, 'error');\r\n }\r\n const { path } = payload;\r\n if (path[0] !== 'state') {\r\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\r\n }\r\n // rewrite the first entry to be able to directly set the state as\r\n // well as any other path\r\n path[0] = '$state';\r\n isTimelineActive = false;\r\n payload.set(store, path, payload.state.value);\r\n isTimelineActive = true;\r\n }\r\n });\r\n });\r\n}\r\nfunction addStoreToDevtools(app, store) {\r\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\r\n componentStateTypes.push(getStoreType(store.$id));\r\n }\r\n setupDevtoolsPlugin({\r\n id: 'dev.esm.pinia',\r\n label: 'Pinia ðŸ',\r\n logo: 'https://pinia.vuejs.org/logo.svg',\r\n packageName: 'pinia',\r\n homepage: 'https://pinia.vuejs.org',\r\n componentStateTypes,\r\n app,\r\n settings: {\r\n logStoreChanges: {\r\n label: 'Notify about new/deleted stores',\r\n type: 'boolean',\r\n defaultValue: true,\r\n },\r\n // useEmojis: {\r\n // label: 'Use emojis in messages âš¡ï¸',\r\n // type: 'boolean',\r\n // defaultValue: true,\r\n // },\r\n },\r\n }, (api) => {\r\n // gracefully handle errors\r\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\r\n store.$onAction(({ after, onError, name, args }) => {\r\n const groupId = runningActionId++;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🛫 ' + name,\r\n subtitle: 'start',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n },\r\n groupId,\r\n },\r\n });\r\n after((result) => {\r\n activeAction = undefined;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🛬 ' + name,\r\n subtitle: 'end',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n result,\r\n },\r\n groupId,\r\n },\r\n });\r\n });\r\n onError((error) => {\r\n activeAction = undefined;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n logType: 'error',\r\n title: '💥 ' + name,\r\n subtitle: 'end',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n error,\r\n },\r\n groupId,\r\n },\r\n });\r\n });\r\n }, true);\r\n store._customProperties.forEach((name) => {\r\n watch(() => unref(store[name]), (newValue, oldValue) => {\r\n api.notifyComponentUpdate();\r\n api.sendInspectorState(INSPECTOR_ID);\r\n if (isTimelineActive) {\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: 'Change',\r\n subtitle: name,\r\n data: {\r\n newValue,\r\n oldValue,\r\n },\r\n groupId: activeAction,\r\n },\r\n });\r\n }\r\n }, { deep: true });\r\n });\r\n store.$subscribe(({ events, type }, state) => {\r\n api.notifyComponentUpdate();\r\n api.sendInspectorState(INSPECTOR_ID);\r\n if (!isTimelineActive)\r\n return;\r\n // rootStore.state[store.id] = state\r\n const eventData = {\r\n time: now(),\r\n title: formatMutationType(type),\r\n data: {\r\n store: formatDisplay(store.$id),\r\n ...formatEventData(events),\r\n },\r\n groupId: activeAction,\r\n };\r\n // reset for the next mutation\r\n activeAction = undefined;\r\n if (type === MutationType.patchFunction) {\r\n eventData.subtitle = '⤵ï¸';\r\n }\r\n else if (type === MutationType.patchObject) {\r\n eventData.subtitle = '🧩';\r\n }\r\n else if (events && !Array.isArray(events)) {\r\n eventData.subtitle = events.type;\r\n }\r\n if (events) {\r\n eventData.data['rawEvent(s)'] = {\r\n _custom: {\r\n display: 'DebuggerEvent',\r\n type: 'object',\r\n tooltip: 'raw DebuggerEvent[]',\r\n value: events,\r\n },\r\n };\r\n }\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: eventData,\r\n });\r\n }, { detached: true, flush: 'sync' });\r\n const hotUpdate = store._hotUpdate;\r\n store._hotUpdate = markRaw((newStore) => {\r\n hotUpdate(newStore);\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🔥 ' + store.$id,\r\n subtitle: 'HMR update',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n info: formatDisplay(`HMR update`),\r\n },\r\n },\r\n });\r\n // update the devtools too\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n });\r\n const { $dispose } = store;\r\n store.$dispose = () => {\r\n $dispose();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n api.getSettings().logStoreChanges &&\r\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\r\n };\r\n // trigger an update so it can display new registered stores\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n api.getSettings().logStoreChanges &&\r\n toastMessage(`\"${store.$id}\" store installed 🆕`);\r\n });\r\n}\r\nlet runningActionId = 0;\r\nlet activeAction;\r\n/**\r\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\r\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\r\n * mutation to the action.\r\n *\r\n * @param store - store to patch\r\n * @param actionNames - list of actionst to patch\r\n */\r\nfunction patchActionForGrouping(store, actionNames) {\r\n // original actions of the store as they are given by pinia. We are going to override them\r\n const actions = actionNames.reduce((storeActions, actionName) => {\r\n // use toRaw to avoid tracking #541\r\n storeActions[actionName] = toRaw(store)[actionName];\r\n return storeActions;\r\n }, {});\r\n for (const actionName in actions) {\r\n store[actionName] = function () {\r\n // setActivePinia(store._p)\r\n // the running action id is incremented in a before action hook\r\n const _actionId = runningActionId;\r\n const trackedStore = new Proxy(store, {\r\n get(...args) {\r\n activeAction = _actionId;\r\n return Reflect.get(...args);\r\n },\r\n set(...args) {\r\n activeAction = _actionId;\r\n return Reflect.set(...args);\r\n },\r\n });\r\n return actions[actionName].apply(trackedStore, arguments);\r\n };\r\n }\r\n}\r\n/**\r\n * pinia.use(devtoolsPlugin)\r\n */\r\nfunction devtoolsPlugin({ app, store, options }) {\r\n // HMR module\r\n if (store.$id.startsWith('__hot:')) {\r\n return;\r\n }\r\n // detect option api vs setup api\r\n if (options.state) {\r\n store._isOptionsAPI = true;\r\n }\r\n // only wrap actions in option-defined stores as this technique relies on\r\n // wrapping the context of the action with a proxy\r\n if (typeof options.state === 'function') {\r\n patchActionForGrouping(\r\n // @ts-expect-error: can cast the store...\r\n store, Object.keys(options.actions));\r\n const originalHotUpdate = store._hotUpdate;\r\n // Upgrade the HMR to also update the new actions\r\n toRaw(store)._hotUpdate = function (newStore) {\r\n originalHotUpdate.apply(this, arguments);\r\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions));\r\n };\r\n }\r\n addStoreToDevtools(app, \r\n // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\r\n store);\r\n}\n\n/**\r\n * Creates a Pinia instance to be used by the application\r\n */\r\nfunction createPinia() {\r\n const scope = effectScope(true);\r\n // NOTE: here we could check the window object for a state and directly set it\r\n // if there is anything like it with Vue 3 SSR\r\n const state = scope.run(() => ref({}));\r\n let _p = [];\r\n // plugins added before calling app.use(pinia)\r\n let toBeInstalled = [];\r\n const pinia = markRaw({\r\n install(app) {\r\n // this allows calling useStore() outside of a component setup after\r\n // installing pinia's plugin\r\n setActivePinia(pinia);\r\n if (!isVue2) {\r\n pinia._a = app;\r\n app.provide(piniaSymbol, pinia);\r\n app.config.globalProperties.$pinia = pinia;\r\n /* istanbul ignore else */\r\n if (USE_DEVTOOLS) {\r\n registerPiniaDevtools(app, pinia);\r\n }\r\n toBeInstalled.forEach((plugin) => _p.push(plugin));\r\n toBeInstalled = [];\r\n }\r\n },\r\n use(plugin) {\r\n if (!this._a && !isVue2) {\r\n toBeInstalled.push(plugin);\r\n }\r\n else {\r\n _p.push(plugin);\r\n }\r\n return this;\r\n },\r\n _p,\r\n // it's actually undefined here\r\n // @ts-expect-error\r\n _a: null,\r\n _e: scope,\r\n _s: new Map(),\r\n state,\r\n });\r\n // pinia devtools rely on dev only features so they cannot be forced unless\r\n // the dev build of Vue is used. Avoid old browsers like IE11.\r\n if (USE_DEVTOOLS && typeof Proxy !== 'undefined') {\r\n pinia.use(devtoolsPlugin);\r\n }\r\n return pinia;\r\n}\n\n/**\r\n * Checks if a function is a `StoreDefinition`.\r\n *\r\n * @param fn - object to test\r\n * @returns true if `fn` is a StoreDefinition\r\n */\r\nconst isUseStore = (fn) => {\r\n return typeof fn === 'function' && typeof fn.$id === 'string';\r\n};\r\n/**\r\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\r\n * remove any key not existing in `newState` and recursively merge plain\r\n * objects.\r\n *\r\n * @param newState - new state object to be patched\r\n * @param oldState - old state that should be used to patch newState\r\n * @returns - newState\r\n */\r\nfunction patchObject(newState, oldState) {\r\n // no need to go through symbols because they cannot be serialized anyway\r\n for (const key in oldState) {\r\n const subPatch = oldState[key];\r\n // skip the whole sub tree\r\n if (!(key in newState)) {\r\n continue;\r\n }\r\n const targetValue = newState[key];\r\n if (isPlainObject(targetValue) &&\r\n isPlainObject(subPatch) &&\r\n !isRef(subPatch) &&\r\n !isReactive(subPatch)) {\r\n newState[key] = patchObject(targetValue, subPatch);\r\n }\r\n else {\r\n // objects are either a bit more complex (e.g. refs) or primitives, so we\r\n // just set the whole thing\r\n if (isVue2) {\r\n set(newState, key, subPatch);\r\n }\r\n else {\r\n newState[key] = subPatch;\r\n }\r\n }\r\n }\r\n return newState;\r\n}\r\n/**\r\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\r\n *\r\n * @example\r\n * ```js\r\n * const useUser = defineStore(...)\r\n * if (import.meta.hot) {\r\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\r\n * }\r\n * ```\r\n *\r\n * @param initialUseStore - return of the defineStore to hot update\r\n * @param hot - `import.meta.hot`\r\n */\r\nfunction acceptHMRUpdate(initialUseStore, hot) {\r\n // strip as much as possible from iife.prod\r\n if (!(process.env.NODE_ENV !== 'production')) {\r\n return () => { };\r\n }\r\n return (newModule) => {\r\n const pinia = hot.data.pinia || initialUseStore._pinia;\r\n if (!pinia) {\r\n // this store is still not used\r\n return;\r\n }\r\n // preserve the pinia instance across loads\r\n hot.data.pinia = pinia;\r\n // console.log('got data', newStore)\r\n for (const exportName in newModule) {\r\n const useStore = newModule[exportName];\r\n // console.log('checking for', exportName)\r\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\r\n // console.log('Accepting update for', useStore.$id)\r\n const id = useStore.$id;\r\n if (id !== initialUseStore.$id) {\r\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\r\n // return import.meta.hot.invalidate()\r\n return hot.invalidate();\r\n }\r\n const existingStore = pinia._s.get(id);\r\n if (!existingStore) {\r\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\r\n return;\r\n }\r\n useStore(pinia, existingStore);\r\n }\r\n }\r\n };\r\n}\n\nconst noop = () => { };\r\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\r\n subscriptions.push(callback);\r\n const removeSubscription = () => {\r\n const idx = subscriptions.indexOf(callback);\r\n if (idx > -1) {\r\n subscriptions.splice(idx, 1);\r\n onCleanup();\r\n }\r\n };\r\n if (!detached && getCurrentInstance()) {\r\n onUnmounted(removeSubscription);\r\n }\r\n return removeSubscription;\r\n}\r\nfunction triggerSubscriptions(subscriptions, ...args) {\r\n subscriptions.slice().forEach((callback) => {\r\n callback(...args);\r\n });\r\n}\n\nfunction mergeReactiveObjects(target, patchToApply) {\r\n // Handle Map instances\r\n if (target instanceof Map && patchToApply instanceof Map) {\r\n patchToApply.forEach((value, key) => target.set(key, value));\r\n }\r\n // Handle Set instances\r\n if (target instanceof Set && patchToApply instanceof Set) {\r\n patchToApply.forEach(target.add, target);\r\n }\r\n // no need to go through symbols because they cannot be serialized anyway\r\n for (const key in patchToApply) {\r\n if (!patchToApply.hasOwnProperty(key))\r\n continue;\r\n const subPatch = patchToApply[key];\r\n const targetValue = target[key];\r\n if (isPlainObject(targetValue) &&\r\n isPlainObject(subPatch) &&\r\n target.hasOwnProperty(key) &&\r\n !isRef(subPatch) &&\r\n !isReactive(subPatch)) {\r\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\r\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\r\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\r\n target[key] = mergeReactiveObjects(targetValue, subPatch);\r\n }\r\n else {\r\n // @ts-expect-error: subPatch is a valid value\r\n target[key] = subPatch;\r\n }\r\n }\r\n return target;\r\n}\r\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\r\n ? Symbol('pinia:skipHydration')\r\n : /* istanbul ignore next */ Symbol();\r\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\r\n/**\r\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\r\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\r\n *\r\n * @param obj - target object\r\n * @returns obj\r\n */\r\nfunction skipHydrate(obj) {\r\n return isVue2\r\n ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\r\n /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\r\n : Object.defineProperty(obj, skipHydrateSymbol, {});\r\n}\r\n/**\r\n * Returns whether a value should be hydrated\r\n *\r\n * @param obj - target variable\r\n * @returns true if `obj` should be hydrated\r\n */\r\nfunction shouldHydrate(obj) {\r\n return isVue2\r\n ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\r\n : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\r\n}\r\nconst { assign } = Object;\r\nfunction isComputed(o) {\r\n return !!(isRef(o) && o.effect);\r\n}\r\nfunction createOptionsStore(id, options, pinia, hot) {\r\n const { state, actions, getters } = options;\r\n const initialState = pinia.state.value[id];\r\n let store;\r\n function setup() {\r\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value, id, state ? state() : {});\r\n }\r\n else {\r\n pinia.state.value[id] = state ? state() : {};\r\n }\r\n }\r\n // avoid creating a state in pinia.state.value\r\n const localState = (process.env.NODE_ENV !== 'production') && hot\r\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\r\n toRefs(ref(state ? state() : {}).value)\r\n : toRefs(pinia.state.value[id]);\r\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\r\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\r\n console.warn(`[ðŸ]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\r\n }\r\n computedGetters[name] = markRaw(computed(() => {\r\n setActivePinia(pinia);\r\n // it was created just before\r\n const store = pinia._s.get(id);\r\n // allow cross using stores\r\n /* istanbul ignore next */\r\n if (isVue2 && !store._r)\r\n return;\r\n // @ts-expect-error\r\n // return getters![name].call(context, context)\r\n // TODO: avoid reading the getter while assigning with a global variable\r\n return getters[name].call(store, store);\r\n }));\r\n return computedGetters;\r\n }, {}));\r\n }\r\n store = createSetupStore(id, setup, options, pinia, hot, true);\r\n store.$reset = function $reset() {\r\n const newState = state ? state() : {};\r\n // we use a patch to group all changes into one single subscription\r\n this.$patch(($state) => {\r\n assign($state, newState);\r\n });\r\n };\r\n return store;\r\n}\r\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\r\n let scope;\r\n const optionsForPlugin = assign({ actions: {} }, options);\r\n /* istanbul ignore if */\r\n // @ts-expect-error: active is an internal property\r\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\r\n throw new Error('Pinia destroyed');\r\n }\r\n // watcher options for $subscribe\r\n const $subscribeOptions = {\r\n deep: true,\r\n // flush: 'post',\r\n };\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production') && !isVue2) {\r\n $subscribeOptions.onTrigger = (event) => {\r\n /* istanbul ignore else */\r\n if (isListening) {\r\n debuggerEvents = event;\r\n // avoid triggering this while the store is being built and the state is being set in pinia\r\n }\r\n else if (isListening == false && !store._hotUpdating) {\r\n // let patch send all the events together later\r\n /* istanbul ignore else */\r\n if (Array.isArray(debuggerEvents)) {\r\n debuggerEvents.push(event);\r\n }\r\n else {\r\n console.error('ðŸ debuggerEvents should be an array. This is most likely an internal Pinia bug.');\r\n }\r\n }\r\n };\r\n }\r\n // internal state\r\n let isListening; // set to true at the end\r\n let isSyncListening; // set to true at the end\r\n let subscriptions = markRaw([]);\r\n let actionSubscriptions = markRaw([]);\r\n let debuggerEvents;\r\n const initialState = pinia.state.value[$id];\r\n // avoid setting the state for option stores if it is set\r\n // by the setup\r\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value, $id, {});\r\n }\r\n else {\r\n pinia.state.value[$id] = {};\r\n }\r\n }\r\n const hotState = ref({});\r\n // avoid triggering too many listeners\r\n // https://github.com/vuejs/pinia/issues/1129\r\n let activeListener;\r\n function $patch(partialStateOrMutator) {\r\n let subscriptionMutation;\r\n isListening = isSyncListening = false;\r\n // reset the debugger events since patches are sync\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n debuggerEvents = [];\r\n }\r\n if (typeof partialStateOrMutator === 'function') {\r\n partialStateOrMutator(pinia.state.value[$id]);\r\n subscriptionMutation = {\r\n type: MutationType.patchFunction,\r\n storeId: $id,\r\n events: debuggerEvents,\r\n };\r\n }\r\n else {\r\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\r\n subscriptionMutation = {\r\n type: MutationType.patchObject,\r\n payload: partialStateOrMutator,\r\n storeId: $id,\r\n events: debuggerEvents,\r\n };\r\n }\r\n const myListenerId = (activeListener = Symbol());\r\n nextTick().then(() => {\r\n if (activeListener === myListenerId) {\r\n isListening = true;\r\n }\r\n });\r\n isSyncListening = true;\r\n // because we paused the watcher, we need to manually call the subscriptions\r\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\r\n }\r\n /* istanbul ignore next */\r\n const $reset = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n throw new Error(`ðŸ: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\r\n }\r\n : noop;\r\n function $dispose() {\r\n scope.stop();\r\n subscriptions = [];\r\n actionSubscriptions = [];\r\n pinia._s.delete($id);\r\n }\r\n /**\r\n * Wraps an action to handle subscriptions.\r\n *\r\n * @param name - name of the action\r\n * @param action - action to wrap\r\n * @returns a wrapped action to handle subscriptions\r\n */\r\n function wrapAction(name, action) {\r\n return function () {\r\n setActivePinia(pinia);\r\n const args = Array.from(arguments);\r\n const afterCallbackList = [];\r\n const onErrorCallbackList = [];\r\n function after(callback) {\r\n afterCallbackList.push(callback);\r\n }\r\n function onError(callback) {\r\n onErrorCallbackList.push(callback);\r\n }\r\n // @ts-expect-error\r\n triggerSubscriptions(actionSubscriptions, {\r\n args,\r\n name,\r\n store,\r\n after,\r\n onError,\r\n });\r\n let ret;\r\n try {\r\n ret = action.apply(this && this.$id === $id ? this : store, args);\r\n // handle sync errors\r\n }\r\n catch (error) {\r\n triggerSubscriptions(onErrorCallbackList, error);\r\n throw error;\r\n }\r\n if (ret instanceof Promise) {\r\n return ret\r\n .then((value) => {\r\n triggerSubscriptions(afterCallbackList, value);\r\n return value;\r\n })\r\n .catch((error) => {\r\n triggerSubscriptions(onErrorCallbackList, error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n // allow the afterCallback to override the return value\r\n triggerSubscriptions(afterCallbackList, ret);\r\n return ret;\r\n };\r\n }\r\n const _hmrPayload = /*#__PURE__*/ markRaw({\r\n actions: {},\r\n getters: {},\r\n state: [],\r\n hotState,\r\n });\r\n const partialStore = {\r\n _p: pinia,\r\n // _s: scope,\r\n $id,\r\n $onAction: addSubscription.bind(null, actionSubscriptions),\r\n $patch,\r\n $reset,\r\n $subscribe(callback, options = {}) {\r\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\r\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\r\n if (options.flush === 'sync' ? isSyncListening : isListening) {\r\n callback({\r\n storeId: $id,\r\n type: MutationType.direct,\r\n events: debuggerEvents,\r\n }, state);\r\n }\r\n }, assign({}, $subscribeOptions, options)));\r\n return removeSubscription;\r\n },\r\n $dispose,\r\n };\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n // start as non ready\r\n partialStore._r = false;\r\n }\r\n const store = reactive((process.env.NODE_ENV !== 'production') || USE_DEVTOOLS\r\n ? assign({\r\n _hmrPayload,\r\n _customProperties: markRaw(new Set()), // devtools custom properties\r\n }, partialStore\r\n // must be added later\r\n // setupStore\r\n )\r\n : partialStore);\r\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\r\n // creating infinite loops.\r\n pinia._s.set($id, store);\r\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\r\n const setupStore = pinia._e.run(() => {\r\n scope = effectScope();\r\n return scope.run(() => setup());\r\n });\r\n // overwrite existing actions to support $onAction\r\n for (const key in setupStore) {\r\n const prop = setupStore[key];\r\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\r\n // mark it as a piece of state to be serialized\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n set(hotState.value, key, toRef(setupStore, key));\r\n // createOptionStore directly sets the state in pinia.state.value so we\r\n // can just skip that\r\n }\r\n else if (!isOptionsStore) {\r\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\r\n if (initialState && shouldHydrate(prop)) {\r\n if (isRef(prop)) {\r\n prop.value = initialState[key];\r\n }\r\n else {\r\n // probably a reactive object, lets recursively assign\r\n // @ts-expect-error: prop is unknown\r\n mergeReactiveObjects(prop, initialState[key]);\r\n }\r\n }\r\n // transfer the ref to the pinia state to keep everything in sync\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value[$id], key, prop);\r\n }\r\n else {\r\n pinia.state.value[$id][key] = prop;\r\n }\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n _hmrPayload.state.push(key);\r\n }\r\n // action\r\n }\r\n else if (typeof prop === 'function') {\r\n // @ts-expect-error: we are overriding the function we avoid wrapping if\r\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\r\n // this a hot module replacement store because the hotUpdate method needs\r\n // to do it with the right context\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(setupStore, key, actionValue);\r\n }\r\n else {\r\n // @ts-expect-error\r\n setupStore[key] = actionValue;\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n _hmrPayload.actions[key] = prop;\r\n }\r\n // list actions so they can be used in plugins\r\n // @ts-expect-error\r\n optionsForPlugin.actions[key] = prop;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n // add getters for devtools\r\n if (isComputed(prop)) {\r\n _hmrPayload.getters[key] = isOptionsStore\r\n ? // @ts-expect-error\r\n options.getters[key]\r\n : prop;\r\n if (IS_CLIENT) {\r\n const getters = setupStore._getters ||\r\n // @ts-expect-error: same\r\n (setupStore._getters = markRaw([]));\r\n getters.push(key);\r\n }\r\n }\r\n }\r\n }\r\n // add the state, getters, and action properties\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n Object.keys(setupStore).forEach((key) => {\r\n set(store, key, setupStore[key]);\r\n });\r\n }\r\n else {\r\n assign(store, setupStore);\r\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\r\n // Make `storeToRefs()` work with `reactive()` #799\r\n assign(toRaw(store), setupStore);\r\n }\r\n // use this instead of a computed with setter to be able to create it anywhere\r\n // without linking the computed lifespan to wherever the store is first\r\n // created.\r\n Object.defineProperty(store, '$state', {\r\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\r\n set: (state) => {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n throw new Error('cannot set hotState');\r\n }\r\n $patch(($state) => {\r\n assign($state, state);\r\n });\r\n },\r\n });\r\n // add the hotUpdate before plugins to allow them to override it\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n store._hotUpdate = markRaw((newStore) => {\r\n store._hotUpdating = true;\r\n newStore._hmrPayload.state.forEach((stateKey) => {\r\n if (stateKey in store.$state) {\r\n const newStateTarget = newStore.$state[stateKey];\r\n const oldStateSource = store.$state[stateKey];\r\n if (typeof newStateTarget === 'object' &&\r\n isPlainObject(newStateTarget) &&\r\n isPlainObject(oldStateSource)) {\r\n patchObject(newStateTarget, oldStateSource);\r\n }\r\n else {\r\n // transfer the ref\r\n newStore.$state[stateKey] = oldStateSource;\r\n }\r\n }\r\n // patch direct access properties to allow store.stateProperty to work as\r\n // store.$state.stateProperty\r\n set(store, stateKey, toRef(newStore.$state, stateKey));\r\n });\r\n // remove deleted state properties\r\n Object.keys(store.$state).forEach((stateKey) => {\r\n if (!(stateKey in newStore.$state)) {\r\n del(store, stateKey);\r\n }\r\n });\r\n // avoid devtools logging this as a mutation\r\n isListening = false;\r\n isSyncListening = false;\r\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\r\n isSyncListening = true;\r\n nextTick().then(() => {\r\n isListening = true;\r\n });\r\n for (const actionName in newStore._hmrPayload.actions) {\r\n const action = newStore[actionName];\r\n set(store, actionName, wrapAction(actionName, action));\r\n }\r\n // TODO: does this work in both setup and option store?\r\n for (const getterName in newStore._hmrPayload.getters) {\r\n const getter = newStore._hmrPayload.getters[getterName];\r\n const getterValue = isOptionsStore\r\n ? // special handling of options api\r\n computed(() => {\r\n setActivePinia(pinia);\r\n return getter.call(store, store);\r\n })\r\n : getter;\r\n set(store, getterName, getterValue);\r\n }\r\n // remove deleted getters\r\n Object.keys(store._hmrPayload.getters).forEach((key) => {\r\n if (!(key in newStore._hmrPayload.getters)) {\r\n del(store, key);\r\n }\r\n });\r\n // remove old actions\r\n Object.keys(store._hmrPayload.actions).forEach((key) => {\r\n if (!(key in newStore._hmrPayload.actions)) {\r\n del(store, key);\r\n }\r\n });\r\n // update the values used in devtools and to allow deleting new properties later on\r\n store._hmrPayload = newStore._hmrPayload;\r\n store._getters = newStore._getters;\r\n store._hotUpdating = false;\r\n });\r\n }\r\n if (USE_DEVTOOLS) {\r\n const nonEnumerable = {\r\n writable: true,\r\n configurable: true,\r\n // avoid warning on devtools trying to display this property\r\n enumerable: false,\r\n };\r\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\r\n Object.defineProperty(store, p, {\r\n value: store[p],\r\n ...nonEnumerable,\r\n });\r\n });\r\n }\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n // mark the store as ready before plugins\r\n store._r = true;\r\n }\r\n // apply all plugins\r\n pinia._p.forEach((extender) => {\r\n /* istanbul ignore else */\r\n if (USE_DEVTOOLS) {\r\n const extensions = scope.run(() => extender({\r\n store,\r\n app: pinia._a,\r\n pinia,\r\n options: optionsForPlugin,\r\n }));\r\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\r\n assign(store, extensions);\r\n }\r\n else {\r\n assign(store, scope.run(() => extender({\r\n store,\r\n app: pinia._a,\r\n pinia,\r\n options: optionsForPlugin,\r\n })));\r\n }\r\n });\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n store.$state &&\r\n typeof store.$state === 'object' &&\r\n typeof store.$state.constructor === 'function' &&\r\n !store.$state.constructor.toString().includes('[native code]')) {\r\n console.warn(`[ðŸ]: The \"state\" must be a plain object. It cannot be\\n` +\r\n `\\tstate: () => new MyClass()\\n` +\r\n `Found in store \"${store.$id}\".`);\r\n }\r\n // only apply hydrate to option stores with an initial state in pinia\r\n if (initialState &&\r\n isOptionsStore &&\r\n options.hydrate) {\r\n options.hydrate(store.$state, initialState);\r\n }\r\n isListening = true;\r\n isSyncListening = true;\r\n return store;\r\n}\r\nfunction defineStore(\r\n// TODO: add proper types from above\r\nidOrOptions, setup, setupOptions) {\r\n let id;\r\n let options;\r\n const isSetupStore = typeof setup === 'function';\r\n if (typeof idOrOptions === 'string') {\r\n id = idOrOptions;\r\n // the option store setup will contain the actual options in this case\r\n options = isSetupStore ? setupOptions : setup;\r\n }\r\n else {\r\n options = idOrOptions;\r\n id = idOrOptions.id;\r\n }\r\n function useStore(pinia, hot) {\r\n const currentInstance = getCurrentInstance();\r\n pinia =\r\n // in test mode, ignore the argument provided as we can always retrieve a\r\n // pinia instance with getActivePinia()\r\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\r\n (currentInstance && inject(piniaSymbol));\r\n if (pinia)\r\n setActivePinia(pinia);\r\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\r\n throw new Error(`[ðŸ]: getActivePinia was called with no active Pinia. Did you forget to install pinia?\\n` +\r\n `\\tconst pinia = createPinia()\\n` +\r\n `\\tapp.use(pinia)\\n` +\r\n `This will fail in production.`);\r\n }\r\n pinia = activePinia;\r\n if (!pinia._s.has(id)) {\r\n // creating the store registers it in `pinia._s`\r\n if (isSetupStore) {\r\n createSetupStore(id, setup, options, pinia);\r\n }\r\n else {\r\n createOptionsStore(id, options, pinia);\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n // @ts-expect-error: not the right inferred type\r\n useStore._pinia = pinia;\r\n }\r\n }\r\n const store = pinia._s.get(id);\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n const hotId = '__hot:' + id;\r\n const newStore = isSetupStore\r\n ? createSetupStore(hotId, setup, options, pinia, true)\r\n : createOptionsStore(hotId, assign({}, options), pinia, true);\r\n hot._hotUpdate(newStore);\r\n // cleanup the state properties and the store from the cache\r\n delete pinia.state.value[hotId];\r\n pinia._s.delete(hotId);\r\n }\r\n // save stores in instances to access them devtools\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n IS_CLIENT &&\r\n currentInstance &&\r\n currentInstance.proxy &&\r\n // avoid adding stores that are just built for hot module replacement\r\n !hot) {\r\n const vm = currentInstance.proxy;\r\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\r\n cache[id] = store;\r\n }\r\n // StoreGeneric cannot be casted towards Store\r\n return store;\r\n }\r\n useStore.$id = id;\r\n return useStore;\r\n}\n\nlet mapStoreSuffix = 'Store';\r\n/**\r\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\r\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\r\n * interface if you are using TypeScript.\r\n *\r\n * @param suffix - new suffix\r\n */\r\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\r\n) {\r\n mapStoreSuffix = suffix;\r\n}\r\n/**\r\n * Allows using stores without the composition API (`setup()`) by generating an\r\n * object to be spread in the `computed` field of a component. It accepts a list\r\n * of store definitions.\r\n *\r\n * @example\r\n * ```js\r\n * export default {\r\n * computed: {\r\n * // other computed properties\r\n * ...mapStores(useUserStore, useCartStore)\r\n * },\r\n *\r\n * created() {\r\n * this.userStore // store with id \"user\"\r\n * this.cartStore // store with id \"cart\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param stores - list of stores to map to an object\r\n */\r\nfunction mapStores(...stores) {\r\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\r\n console.warn(`[ðŸ]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\r\n `Replace\\n` +\r\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\r\n `with\\n` +\r\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\r\n `This will fail in production if not fixed.`);\r\n stores = stores[0];\r\n }\r\n return stores.reduce((reduced, useStore) => {\r\n // @ts-expect-error: $id is added by defineStore\r\n reduced[useStore.$id + mapStoreSuffix] = function () {\r\n return useStore(this.$pinia);\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Allows using state and getters from one store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `computed` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapState(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n reduced[key] = function () {\r\n return useStore(this.$pinia)[key];\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function () {\r\n const store = useStore(this.$pinia);\r\n const storeKey = keysOrMapper[key];\r\n // for some reason TS is unable to infer the type of storeKey to be a\r\n // function\r\n return typeof storeKey === 'function'\r\n ? storeKey.call(this, store)\r\n : store[storeKey];\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Alias for `mapState()`. You should use `mapState()` instead.\r\n * @deprecated use `mapState()` instead.\r\n */\r\nconst mapGetters = mapState;\r\n/**\r\n * Allows directly using actions from your store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `methods` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapActions(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function (...args) {\r\n return useStore(this.$pinia)[key](...args);\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function (...args) {\r\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Allows using state and getters from one store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `computed` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapWritableState(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n // @ts-ignore\r\n reduced[key] = {\r\n get() {\r\n return useStore(this.$pinia)[key];\r\n },\r\n set(value) {\r\n // it's easier to type it here as any\r\n return (useStore(this.$pinia)[key] = value);\r\n },\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-ignore\r\n reduced[key] = {\r\n get() {\r\n return useStore(this.$pinia)[keysOrMapper[key]];\r\n },\r\n set(value) {\r\n // it's easier to type it here as any\r\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\r\n },\r\n };\r\n return reduced;\r\n }, {});\r\n}\n\n/**\r\n * Creates an object of references with all the state, getters, and plugin-added\r\n * state properties of the store. Similar to `toRefs()` but specifically\r\n * designed for Pinia stores so methods and non reactive properties are\r\n * completely ignored.\r\n *\r\n * @param store - store to extract the refs from\r\n */\r\nfunction storeToRefs(store) {\r\n // See https://github.com/vuejs/pinia/issues/852\r\n // It's easier to just use toRefs() even if it includes more stuff\r\n if (isVue2) {\r\n // @ts-expect-error: toRefs include methods and others\r\n return toRefs(store);\r\n }\r\n else {\r\n store = toRaw(store);\r\n const refs = {};\r\n for (const key in store) {\r\n const value = store[key];\r\n if (isRef(value) || isReactive(value)) {\r\n // @ts-expect-error: the key is state or getter\r\n refs[key] =\r\n // ---\r\n toRef(store, key);\r\n }\r\n }\r\n return refs;\r\n }\r\n}\n\n/**\r\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\r\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\r\n * https://pinia.vuejs.org/ssr/nuxt.html.\r\n *\r\n * @example\r\n * ```js\r\n * import Vue from 'vue'\r\n * import { PiniaVuePlugin, createPinia } from 'pinia'\r\n *\r\n * Vue.use(PiniaVuePlugin)\r\n * const pinia = createPinia()\r\n *\r\n * new Vue({\r\n * el: '#app',\r\n * // ...\r\n * pinia,\r\n * })\r\n * ```\r\n *\r\n * @param _Vue - `Vue` imported from 'vue'.\r\n */\r\nconst PiniaVuePlugin = function (_Vue) {\r\n // Equivalent of\r\n // app.config.globalProperties.$pinia = pinia\r\n _Vue.mixin({\r\n beforeCreate() {\r\n const options = this.$options;\r\n if (options.pinia) {\r\n const pinia = options.pinia;\r\n // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\r\n /* istanbul ignore else */\r\n if (!this._provided) {\r\n const provideCache = {};\r\n Object.defineProperty(this, '_provided', {\r\n get: () => provideCache,\r\n set: (v) => Object.assign(provideCache, v),\r\n });\r\n }\r\n this._provided[piniaSymbol] = pinia;\r\n // propagate the pinia instance in an SSR friendly way\r\n // avoid adding it to nuxt twice\r\n /* istanbul ignore else */\r\n if (!this.$pinia) {\r\n this.$pinia = pinia;\r\n }\r\n pinia._a = this;\r\n if (IS_CLIENT) {\r\n // this allows calling useStore() outside of a component setup after\r\n // installing pinia's plugin\r\n setActivePinia(pinia);\r\n }\r\n if (USE_DEVTOOLS) {\r\n registerPiniaDevtools(pinia._a, pinia);\r\n }\r\n }\r\n else if (!this.$pinia && options.parent && options.parent.$pinia) {\r\n this.$pinia = options.parent.$pinia;\r\n }\r\n },\r\n destroyed() {\r\n delete this._pStores;\r\n },\r\n });\r\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","import { defineStore, createPinia, setActivePinia } from \"pinia\";\r\n\r\nconst pinia = createPinia();\r\nsetActivePinia(pinia);\r\n\r\nconst useAxiosStore = defineStore(\"axiosStore\", {\r\n state: () => ({\r\n detectarCambiosRequestResponse: false,\r\n contadorRequestResponse: 0\r\n })\r\n});\r\n\r\nexport default useAxiosStore;\r\n\r\n","import { Cliente, Configuration, EstadoRespuesta, IdentityApi } from \"./api\";\r\nimport axios from \"axios\";\r\nimport type { AxiosResponse } from \"axios\";\r\nimport { instancia as router } from \"@/router\";\r\nimport useAxiosStore from \"@/store/storeAxios\";\r\n\r\nlet token = \"\";\r\nlet usuario = \"\";\r\nlet contrasenia = \"\";\r\n\r\nconst axiosApi = axios.create();\r\n\r\nfunction buscarReferencia(objeto: any, ref: string): any {\r\n if (objeto != undefined && objeto != null && objeto.$id == ref) return objeto;\r\n if (objeto == undefined || objeto == null) return undefined;\r\n for (const k in objeto) {\r\n if (!(objeto[k] instanceof Object)) continue;\r\n const br = buscarReferencia(objeto[k], ref);\r\n if (br != undefined) return br;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction resolverRefsArray(objeto: any, objetoGlobal: any) {\r\n for (let k = 0; k < objeto.length; k++) {\r\n if (objeto[k] == null || objeto[k] == undefined) continue;\r\n const ks = Object.keys(objeto[k]);\r\n if (ks.length == 1 && ks[0] == \"$ref\") objeto[k] = buscarReferencia(objetoGlobal, objeto[k].$ref);\r\n else if (objeto[k] instanceof Object) objeto[k] = resolverRefs(objeto[k], objetoGlobal);\r\n }\r\n}\r\n\r\nfunction resolverRefsObjeto(objeto: any, objetoGlobal: any) {\r\n for (const k in objeto) {\r\n if (objeto[k] == null || objeto[k] == undefined) continue;\r\n const ks = Object.keys(objeto[k]);\r\n if (ks.length == 1 && ks[0] == \"$ref\") objeto[k] = buscarReferencia(objetoGlobal, objeto[k].$ref);\r\n else if (objeto[k] instanceof Object) objeto[k] = resolverRefs(objeto[k], objetoGlobal);\r\n }\r\n}\r\n\r\nfunction resolverRefs(objeto: any, objetoGlobal: any) {\r\n if (!(objeto instanceof Object)) return objeto;\r\n if (Array.isArray(objeto)) resolverRefsArray(objeto, objetoGlobal);\r\n else resolverRefsObjeto(objeto, objetoGlobal);\r\n return objeto;\r\n}\r\n\r\nfunction removerIds(pila: any[], objeto: any): any {\r\n if (objeto == null || objeto == undefined || !(objeto instanceof Object)) return objeto;\r\n if (\"$id\" in objeto) delete objeto.$id;\r\n for (const k in objeto) {\r\n if (!(objeto[k] instanceof Object)) continue;\r\n if (pila.includes(objeto[k])) continue;\r\n if (!(\"$values\" in objeto[k])) pila.push(objeto[k]);\r\n objeto[k] = removerIds(pila, objeto[k]);\r\n }\r\n if (\"$values\" in objeto) return objeto.$values;\r\n return objeto;\r\n}\r\n\r\n// Add a request interceptor\r\naxiosApi.interceptors.request.use(\r\n function (config) {\r\n // Do something before request is sent\r\n const axiosStore = useAxiosStore();\r\n axiosStore.contadorRequestResponse++;\r\n axiosStore.detectarCambiosRequestResponse = !axiosStore.detectarCambiosRequestResponse;\r\n\r\n return config;\r\n },\r\n function (error) {\r\n // Do something with request error\r\n const axiosStore = useAxiosStore();\r\n axiosStore.contadorRequestResponse--;\r\n axiosStore.detectarCambiosRequestResponse = !axiosStore.detectarCambiosRequestResponse;\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\naxiosApi.interceptors.response.use(\r\n async (respuesta: AxiosResponse<any>) => {\r\n const axiosStore = useAxiosStore();\r\n axiosStore.contadorRequestResponse--;\r\n axiosStore.detectarCambiosRequestResponse = !axiosStore.detectarCambiosRequestResponse;\r\n\r\n //#region Renovar automáticamente JWT\r\n if (\"Token-Expired\" in respuesta.headers) {\r\n await api.IdentityApi.Login({\r\n contrasenia,\r\n usuario\r\n });\r\n respuesta.config.headers![\"Authorization\"] = (<(name: string) => string>configuracion.accessToken)(\r\n \"Authorization\"\r\n );\r\n respuesta = await axiosApi.request(respuesta.config);\r\n }\r\n //#endregion\r\n\r\n const pila: any[] = [];\r\n if (respuesta.data) {\r\n respuesta.data = resolverRefs(respuesta.data, respuesta.data);\r\n respuesta.data = removerIds(pila, respuesta.data);\r\n }\r\n return respuesta;\r\n },\r\n error => {\r\n const axiosStore = useAxiosStore();\r\n axiosStore.contadorRequestResponse--;\r\n axiosStore.detectarCambiosRequestResponse = !axiosStore.detectarCambiosRequestResponse;\r\n if (error === undefined) return Promise.reject();\r\n if (error?.response?.status == 503 && router.currentRoute.value.name != \"app-offline\") {\r\n router.push({ name: \"app-offline\" });\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nconst configuracion = new Configuration({\r\n accessToken: () => token,\r\n basePath: (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\")\r\n});\r\n\r\n// AGREGAR AQUà LOS DEMÃS CONTROLADORES DE LA MISMA FORMA COMO ESTÃN DECLARADOS LOS DEMÃS:\r\nconst api = {\r\n IdentityApi: new IdentityApi(configuracion, undefined, axiosApi),\r\n Cliente: {\r\n Cliente: {\r\n EscrituracionApi: new Cliente.Cliente.EscrituracionApi(configuracion, undefined, axiosApi),\r\n FinanciamientoApi: new Cliente.Cliente.FinanciamientoApi(configuracion, undefined, axiosApi),\r\n AdjudicacionApi: new Cliente.Cliente.AdjudicacionApi(configuracion, undefined, axiosApi),\r\n HomeApi: new Cliente.Cliente.HomeApi(configuracion, undefined, axiosApi),\r\n MaterialApoyo: new Cliente.Cliente.MaterialApoyoApi(configuracion, undefined, axiosApi),\r\n ProgramaReclicaApi: new Cliente.Cliente.ProgramaReciclaApi(configuracion, undefined, axiosApi),\r\n SeguroApi: new Cliente.Cliente.SeguroApi(configuracion, undefined, axiosApi),\r\n AclaracionApi: new Cliente.Cliente.AtencionClienteApi(configuracion, undefined, axiosApi),\r\n SiniestroApi: new Cliente.Cliente.SiniestroApi(configuracion, undefined, axiosApi),\r\n FacturacionApi: new Cliente.Cliente.FacturacionApi(configuracion, undefined, axiosApi),\r\n DomiciliacionApi: new Cliente.Cliente.DomiciliacionApi(configuracion, undefined, axiosApi),\r\n RegimenFiscalApi: new Cliente.Cliente.RegimenFiscalApi(configuracion, undefined, axiosApi),\r\n ClienteApi: new Cliente.Cliente.ClienteApi(configuracion, undefined, axiosApi),\r\n OperacionTitulacionApi: new Cliente.Cliente.OperacionTitulacionApi(configuracion, undefined, axiosApi),\r\n GiroIngresoApi: new Cliente.Cliente.GiroIngresoApi(configuracion, undefined, axiosApi),\r\n ProfesionApi: new Cliente.Cliente.ProfesionApi(configuracion, undefined, axiosApi),\r\n ColoniaApi: new Cliente.Cliente.ColoniaApi(configuracion, undefined, axiosApi),\r\n EstudioSocioEconomicoApi: new Cliente.Cliente.EstudioSocioeconomicoApi(configuracion, undefined, axiosApi)\r\n }\r\n }\r\n};\r\n\r\nconst loginOriginal = api.IdentityApi.Login;\r\n\r\napi.IdentityApi.Login = async (loginBody: Identity.LoginBody, options?: any) => {\r\n const r = await loginOriginal.call(api.IdentityApi, loginBody, options);\r\n if (r.data.estado == EstadoRespuesta.OK) {\r\n token = r.data.data;\r\n usuario = loginBody.usuario;\r\n contrasenia = loginBody.contrasenia;\r\n }\r\n return r;\r\n};\r\n\r\nexport default api;\r\n\r\n","import { defineStore } from \"pinia\";\r\n\r\nexport const useStore = defineStore(\"clienteCliente\", {\r\n state: () => ({\r\n clienteId: 0 as number,\r\n nombrePilaCliente: \"\",\r\n nombrePilaApellidoPaternoCliente: \"\",\r\n porLiquidar:false, //CORE-0777\r\n nombreCompletoCliente: \"\",\r\n mostrarEscrituracion: false,\r\n mostrarSeguro: false,\r\n titulo: \"\",\r\n sesionIniciada: false,\r\n clienteAceptaTerminosCondicionesAvisoPrivacidad: false,\r\n modalLoginId: \"\"\r\n })\r\n});\r\n\r\n","<template lang=\"pug\">\r\n.header-principal: .container.ff-poppins: .row: .col\r\n .row\r\n .col-md-2: img.me-2(src=\"../../../assets/LogoColor2.png\", title=\"logo\", style=\"width: 150px; height: 60px;\")\r\n .col-md-6\r\n .row\r\n .col-6(v-if=\"$route.name == 'cliente-cliente-login'\")\r\n router-link.text-decoration-none.me-4(:to=\"{ name: 'cliente-cliente-reporte-seguro-vida' }\" style=\"color: #34189a; font-weight: 100\") \r\n .button.btn.btn-primary.text-white.px-5.fw-bold(style=\"border-radius: 20px; background: #ffa000; font-size: 13px\") Soy beneficiario y quiero reportar un siniestro de vida.\r\n .align-middle.d-inline-block(v-if=\"mostrarMenu\")\r\n router-link.text-decoration-none.me-4(:to=\"{ name: 'cliente-cliente-home' }\" style=\"color: #34189a; font-weight: 600; font-weight: 600\") Inicio\r\n router-link.text-decoration-none.me-4(\r\n v-if=\"store.mostrarEscrituracion\"\r\n :to=\"{ name: 'cliente-cliente-escrituracion' }\"\r\n style=\"color: #34189a; font-weight: 600\"\r\n ) Escrituración\r\n router-link.text-decoration-none.me-4(:to=\"{ name: 'cliente-cliente-financiamiento' }\" style=\"color: #34189a; font-weight: 600\") Financiamiento\r\n router-link.text-decoration-none.me-4(:to=\"{ name: 'cliente-cliente-adjudicaciones' }\" style=\"color: #34189a; font-weight: 600\") Adjudicaciones\r\n router-link.text-decoration-none.me-4(:to=\"{ name: 'cliente-cliente-materiales-apoyo' }\" style=\"color: #34189a; font-weight: 600\") Material Apoyo\r\n router-link.text-decoration-none.me-4(\r\n v-if=\"mostrarTodoSobreMiFinanciamiento\"\r\n :to=\"{ name: 'cliente-cliente-home' }\"\r\n style=\"color: #34189a; font-weight: 600\"\r\n ) Documentos\r\n router-link.text-decoration-none.me-4(\r\n v-if=\"mostrarMaterialApoyo\"\r\n :to=\"{ name: 'cliente-cliente-materiales-apoyo' }\"\r\n style=\"color: #34189a; font-weight: 600\"\r\n ) Material de Apoyo\r\n .dropdown.d-inline-block\r\n button.btn.btn-outline-white.dropdown-toggle.bg-white(data-bs-toggle=\"dropdown\" style=\"border-radius: 90px; color: #34189a; font-weight: 600\") Seguros\r\n ul.dropdown-menu\r\n li: a.dropdown-item(v-for=\"(periodo, index) in seguros\" :key=\"index\" href=\"#\" @click.prevent=\"seleccionarSeguro(periodo.path)\") {{ periodo.Name }}\r\n .col-md-4.mt-3\r\n .float-end(style=\"height: 100%; line-height: 60px\")\r\n .align-middle.d-inline-block(v-if=\"mostrarMenu\")\r\n a.me-2(href=\"#\" @click.prevent=\"\" style=\"color: #6e7599\"): em.far.fa-bell\r\n a.btn.text-white.fw-bold(href=\"#\" style=\"background: #5935df; border-radius: 16px; font-size: 14px\") \r\n | {{ store.nombreCompletoCliente }}\r\n em.ms-2.far.fa-user\r\n a.ms-2.text-decoration-none(style=\"color: #34189a; font-weight: 600\" href=\"#\" @click.prevent=\"salir()\") Salir\r\n .align-middle.d-inline-block(v-if=\"store.titulo\")\r\n span.fw-bold.fs-5(style=\"color: #34189a\") {{ store.titulo }}\r\n</template>\r\n\r\n<style lang=\"sass\">\r\n.header-principal\r\n background-color: #fff\r\n box-shadow: 0px 0px 8px 0px #00000040\r\n padding-top: 8px\r\n padding-bottom: 10px\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"../store\";\r\nimport { ref, onMounted } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\n\r\ninterface MenuSeguros {\r\n path: string;\r\n Name: string;\r\n}\r\n\r\nconst store = useStore();\r\nconst router = useRouter();\r\nconst mostrarTodoSobreMiFinanciamiento = ref(\r\n import.meta.env.VITE_CLIENTE_CLIENTE_MOSTRAR_TODO_SOBRE_MI_FINANCIAMIENTO == \"1\"\r\n);\r\nconst mostrarMaterialApoyo = ref(import.meta.env.VITE_CLIENTE_CLIENTE_MOSTRAR_MATERIAL_DE_APOYO == \"1\");\r\nconst seguros = ref([] as MenuSeguros[]);\r\nconst props = defineProps({\r\n mostrarMenu: { type: Boolean, default: false }\r\n});\r\n\r\nasync function salir() {\r\n await api.Cliente.Cliente.HomeApi.Logout();\r\n store.sesionIniciada = false;\r\n await router.push({ name: \"cliente-cliente-login\" });\r\n window.sessionStorage.clear();\r\n window.location.reload();\r\n}\r\nasync function seleccionarSeguro(periodo: string) {\r\n await router.push({ name: periodo });\r\n}\r\nonMounted(() => {\r\n seguros.value = [];\r\n seguros.value.push({ path: \"cliente-cliente-seguro-vida\", Name: \"Vida\" });\r\n seguros.value.push({ path: \"cliente-cliente-seguro-danios\", Name: \"Daños\" });\r\n seguros.value.push({ path: \"cliente-cliente-siniestro-generales\", Name: \"Siniestros\" });\r\n});\r\n</script>\r\n","export default \"__VITE_ASSET__7aac6ce2__\"","export default \"__VITE_ASSET__0bd22879__\"","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","<template lang=\"pug\">\r\n.footer-principal: .container.ff-poppins\r\n .row\r\n .col-3\r\n img(src=\"../../../assets/logoblanco.png\" style=\"margin-right: calc(40px + 0.75rem); width: 190px\")\r\n .col-1\r\n .d-inline-block.align-middle(style=\"width: calc(100% - 280px - 0.75rem)\")\r\n .col: p: router-link.fw-bold.text-decoration-none.text-white(:to=\"{ name: 'cliente-cliente-home' }\") Inicio\r\n .col(v-if=\"mostrarMenu\"): p: router-link.fw-bold.text-decoration-none.text-white(:to=\"{ name: 'cliente-cliente-perfil' }\") Mi Perfil\r\n .col(v-if=\"mostrarMenu && mostrarTodoSobreMiFinanciamiento\"): p: router-link.fw-bold.text-decoration-none.text-white(\r\n :to=\"{ name: 'cliente-cliente-home' }\"\r\n ) Todo Sobre mi Financiamiento\r\n .col-2.ps-5\r\n .col(v-if=\"mostrarMenu\"): p: router-link.fw-bold.text-decoration-none.text-white(:to=\"{ name: 'cliente-cliente-financiamiento' }\") Financiamiento\r\n .col(v-if=\"mostrarMenu && clienteClienteStore.mostrarEscrituracion\"): p: router-link.fw-bold.text-decoration-none.text-white(\r\n :to=\"{ name: 'cliente-cliente-escrituracion' }\"\r\n ) Escrituración\r\n .col(v-if=\"mostrarMaterialApoyo\"): p: router-link.fw-bold.text-decoration-none.text-white(:to=\"{ name: 'cliente-cliente-materiales-apoyo' }\") Material de Apoyo\r\n .col-2\r\n .col(v-if=\"false\"): p: router-link.fw-bold.text-decoration-none.text-white(:to=\"{ name: 'cliente-cliente-home' }\") Mapa de Sitio\r\n .col: p: a.fw-bold.text-decoration-none.text-white(href=\"https://hircasa.com.mx\") Portal <span class=\"text-primary\">HIR Casa</span>\r\n .col-4\r\n p\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n i.fas.fa-circle.fa-stack-2x\r\n i.fab.fa-facebook-f.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n em.fas.fa-circle.fa-stack-2x\r\n em.fab.fa-twitter.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n em.fas.fa-circle.fa-stack-2x\r\n em.fab.fa-instagram.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n em.fas.fa-circle.fa-stack-2x\r\n em.fab.fa-linkedin-in.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n em.fas.fa-circle.fa-stack-2x\r\n em.fab.fa-youtube.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n a.text-decoration-none.text-white(href=\"#\" @click.prevent=\"\"): span.fa-stack(style=\"font-size: 137.5%\")\r\n em.fas.fa-circle.fa-stack-2x\r\n em.fab.fa-whatsapp.fa-stack-1x.fa-inverse(style=\"color: #2f2d74\")\r\n\r\n hr.my-3(style=\"background: #a1b5d8; height: 1px\")\r\n\r\n .row.text-white\r\n .col-3\r\n p Av. Desierto de los Leones No. 46, Nivel 1, Col. San Ãngel, Ãlvaro Obregón, C.P. 01000, Ciudad de México.\r\n a.btn.btn-outline-light.fw-bold.text-white.text-decoration-none(href=\"https://goo.gl/maps/EDePb6fTgEWJZgsJ8\" target=\"_blank\")\r\n em.fas.fa-map-marker-alt.me-2\r\n | Abrir en Google Maps\r\n .col-3\r\n p Horario de Atención:\r\n p.fw-bold\r\n em.fas.fa-clock.me-2\r\n | Lun - Vie: 09:00 - 18:00\r\n p: a.fw-bold.text-decoration-none.text-white(href=\"tel:+525555119910\")\r\n em.fas.fa-phone-alt.me-2\r\n | 55 5511 9910\r\n p: a.fw-bold.text-decoration-none.text-white(href=\"tel:+528004472272\")\r\n em.fas.fa-phone-alt.me-2\r\n | 800 hircasa (447 2272)\r\n p: a.fw-bold.text-white(href=\"mailto:atencionaclientes@hircasa.com.mx\")\r\n em.fas.fa-envelope.me-2\r\n | atencionaclientes@hircasa.com.mx\r\n .col-2\r\n p: a.text-white.text-decoration-none(href=\"https://hircasa.com.mx/aviso-privacidad/\" target=\"_blank\") Aviso de Privacidad\r\n p: a.text-white.text-decoration-none(href=\"https://hircasa.com.mx/aviso-legal/\" target=\"_blank\") Términos y Condiciones\r\n .col-4\r\n p Certificaciones\r\n img(src=\"../../../assets/certificaciones.png\" style=\"width: 100%\")\r\n</template>\r\n\r\n<style lang=\"sass\" scope>\r\n.footer-principal\r\n background: #2F2D74\r\n padding-top: 40px\r\n padding-bottom: 0.75rem\r\n font-size: 14px\r\n.col\r\n width: max-content\r\n</style>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nimport { useStore } from \"../store\";\r\nimport { mapStores } from \"pinia\";\r\n\r\nexport default defineComponent({\r\n data() {\r\n return {\r\n mostrarTodoSobreMiFinanciamiento:\r\n import.meta.env.VITE_CLIENTE_CLIENTE_MOSTRAR_TODO_SOBRE_MI_FINANCIAMIENTO == \"1\",\r\n mostrarMaterialApoyo: import.meta.env.VITE_CLIENTE_CLIENTE_MOSTRAR_MATERIAL_DE_APOYO == \"1\"\r\n };\r\n },\r\n props: {\r\n mostrarMenu: { type: Boolean, default: false }\r\n },\r\n computed: {\r\n ...mapStores(useStore)\r\n }\r\n});\r\n</script>\r\n","function initializeGenesys() {\r\n const g = window;\r\n const e = 'Genesys';\r\n const n = 'https://apps.usw2.pure.cloud/genesys-bootstrap/genesys.min.js';\r\n const es = {\r\n environment: 'prod-usw2',\r\n deploymentId: '9822f2a3-4996-49f5-8be5-21bf880220d5'\r\n };\r\n \r\n g['_genesysJs'] = e;\r\n g[e] = g[e] || function () {\r\n (g[e].q = g[e].q || []).push(arguments);\r\n };\r\n g[e].t = 1 * new Date();\r\n g[e].c = es;\r\n \r\n const ys = document.createElement('script');\r\n ys.classList.add('bg-success')\r\n ys.async = 1;\r\n ys.src = n;\r\n ys.charset = 'utf-8';\r\n document.head.appendChild(ys);\r\n ys.click()\r\n }\r\n\r\n export default initializeGenesys","/**\r\n * Función que regresa un nuevo arreglo los distintos elementos de un arreglo con base en un comparador opcional\r\n * @param arr Arreglo\r\n * @param comparer Función de comparación, debe de regresar true en caso de que los elemento sean iguales\r\n */\r\nexport function arrayDistinct<T>(arr: T[], comparer: ((a: T, b: T) => boolean) | null | undefined): T[] {\r\n if (comparer == null || comparer == undefined) comparer = (a: T, b: T) => a == b;\r\n const arrDiff: T[] = [];\r\n let encontrado = false;\r\n for (const i of arr) {\r\n encontrado = false;\r\n for (const j of arrDiff) {\r\n encontrado = comparer(i, j);\r\n if (encontrado) break;\r\n }\r\n if (!encontrado) arrDiff.push(i);\r\n }\r\n return arrDiff;\r\n}\r\nexport function descargarBlob(archivo: Blob, nombre: string): void {\r\n const aHtml = document.createElement(\"a\");\r\n aHtml.download = nombre;\r\n document.body.appendChild(aHtml);\r\n aHtml.style.display = \"none\";\r\n const url = window.URL.createObjectURL(archivo);\r\n aHtml.href = url;\r\n aHtml.click();\r\n window.URL.revokeObjectURL(url);\r\n document.body.removeChild(aHtml);\r\n}\r\n\r\nexport function ifNaN(valor: any, valorIfNaN: any = 0) {\r\n if (isNaN(valor)) return valorIfNaN;\r\n return valor;\r\n}\r\n\r\nexport function generarId() {\r\n return \"a\" + Math.random().toString(36).substring(7) + Math.random().toString(36).substring(7);\r\n}\r\n\r\nexport function limpiarString(texto: string) {\r\n return (texto ?? \"\")\r\n .toUpperCase()\r\n .trim()\r\n .replace(/ {2,}/g, \" \")\r\n .replace(/\\n{2,}/g, \"\\n\")\r\n .replace(/(^\\n)|(\\n$)/, \"\");\r\n}\r\n\r\nexport const patronAlfaNum = \"[a-zA-Z0-9áéÃóúÜüÃÉÃÓÚñÑ]+\";\r\nexport const patronAlfaNumEspacio = \"[a-zA-Z0-9áéÃóúÜüÃÉÃÓÚñÑ ]+\";\r\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.2.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.2';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this.tip) {\n this.tip.remove();\n }\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n if (this._popper) {\n this._popper.update();\n } else {\n this._popper = this._createPopper(tip);\n }\n\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n tip.remove();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n\n this._disposePopper();\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // todo:v6: could be only `tab`\n\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n\n if (!this._parent) {\n return; // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n } // Set up initial aria attributes\n\n\n this._setInitialAttributes(this._parent, this._getChildren());\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n } // Getters\n\n\n static get NAME() {\n return NAME$1;\n } // Public\n\n\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n\n if (this._elemIsActive(innerElem)) {\n return;\n } // Search for active tab on same parent to deactivate it\n\n\n const active = this._getActiveElem();\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n\n this._deactivate(active, innerElem);\n\n this._activate(innerElem, active);\n } // Private\n\n\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n\n this._toggleDropDown(element, true);\n\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n\n this._toggleDropDown(element, false);\n\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {\n return;\n }\n\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n\n event.preventDefault();\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true);\n\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n\n const isActive = this._elemIsActive(child);\n\n const outerElem = this._getOuterElement(child);\n\n child.setAttribute('aria-selected', isActive);\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too\n\n\n this._setInitialAttributesOnTargetPanel(child);\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child);\n\n if (!target) {\n return;\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n } // Try to get the inner element (usually the .nav-link)\n\n\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n } // Try to get the outer element (usually the .nav-item)\n\n\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n Tab.getOrCreateInstance(this).show();\n});\n/**\n * Initialize on focus\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n\n this._setListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this.isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n } // Private\n\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n\n if (isInteracting) {\n this._clearTimeout();\n\n return;\n }\n\n const nextElement = event.relatedTarget;\n\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Toast);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","<template lang=\"pug\">\r\ndiv\r\n cliente-header(:mostrar-menu=\"mostrarMenu\")\r\n .body\r\n router-view(v-slot=\"{ Component }\")\r\n suspense\r\n template(#default)\r\n component(:is=\"Component\")\r\n template(#fallback)\r\n .container: .row: .col: h1 Cargando...\r\n \r\n \r\n a(:href=\"URLWhatsApp\" target=\"_blank\")\r\n img.wa(src=\"data:image/png;base64,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\", alt='Logo de OpenAI')\r\n \r\n\r\n cliente-footer(:mostrar-menu=\"mostrarMenu\")\r\n\r\n // Modal\r\n.modal(\r\n :id=\"'modalAxios-' + axiosStore.idModalGlobal\"\r\n data-bs-backdrop=\"static\"\r\n data-bs-keyboard=\"false\"\r\n tabindex=\"-1\"\r\n aria-labelledby=\"modalAxiosLabel\"\r\n aria-hidden=\"true\"\r\n)\r\n .modal-dialog.modal-dialog-centered\r\n .modal-content\r\n .modal-body.d-flex.justify-content-center.align-items-center\r\n span.spinner-border.spinner-border-sm.text-primary(role=\"status\" aria-hidden=\"true\")\r\n |\r\n span.text-primary.p-2 Cargando...\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { onMounted, ref, watch } from \"vue\";\r\nimport ClienteHeader from \"../components/CCHeader.vue\";\r\nimport ClienteFooter from \"../components/CCFooter.vue\";\r\nimport initializeGenesys from \"@/Aplicaciones/Cliente/Areas/Cliente/helpers/chat.js\"\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"../store\";\r\nimport { Cliente } from \"@/servicios/api\";\r\nconst $store = useStore();\r\nimport * as utilidades from \"@/utilidades\";\r\nimport useAxiosStore from \"@/store/storeAxios\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\n//#region Data\r\nconst mostrarMenu = ref(false);\r\nconst URLDevQ = ref(\"https://appointments.clients.debmedia.com/#/company/hircasa/schedules\");\r\nconst URLWhatsApp = ref(\"http://wa.me/5215576659885\");\r\nconst axiosStore = useAxiosStore();\r\naxiosStore.idModalGlobal = utilidades.generarId();\r\n//#endregion\r\n\r\n//#region Methods\r\nfunction abrirModal() {\r\n const miModal = document.getElementById(`modalAxios-${axiosStore.idModalGlobal}`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n if (modal) {\r\n modal?.show();\r\n } else {\r\n const nuevoModal = new bootstrap.Modal(miModal);\r\n nuevoModal?.show();\r\n }\r\n}\r\n\r\nfunction cerrarModal() {\r\n const miModal = document.getElementById(`modalAxios-${axiosStore.idModalGlobal}`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n modal?.hide();\r\n}\r\n\r\nonMounted( async () =>{\r\n initializeGenesys()\r\n})\r\n\r\nwatch(\r\n () => axiosStore.detectarCambiosRequestResponse,\r\n\r\n x => {\r\n abrirModal();\r\n if (axiosStore.contadorRequestResponse <= 0) {\r\n cerrarModal();\r\n }\r\n },\r\n\r\n { deep: true, inmediate: true }\r\n);\r\n\r\n\r\nfunction popUpChat() {\r\n let left = window.innerWidth / 2 - 225;\r\n window.open(\r\n \"https://chat.hircasa.com/chat/\",\r\n \"HIR-Chat\",\r\n \"scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no, width=450,height=650,left=\" +\r\n left +\r\n \",top=80\"\r\n );\r\n}\r\nasync function cargarDatos() {\r\n let usuario: Cliente.Financiamiento.InformacionCliente;\r\n mostrarMenu.value = false;\r\n try {\r\n let resp = await api.Cliente.Cliente.HomeApi.ObtenerInformacion();\r\n gtag(\"set\", { client_id: resp.data.clienteId });\r\n mostrarMenu.value = true;\r\n usuario = resp.data;\r\n URLDevQ.value = usuario.urlDevQ ?? \"\";\r\n URLWhatsApp.value = usuario.urlWhatsApp ?? \"\";\r\n $store.clienteId = usuario.clienteId;\r\n $store.nombrePilaCliente = usuario.nombre ?? \"\";\r\n $store.nombrePilaApellidoPaternoCliente = (usuario.nombre ?? \"\") + \" \" + (usuario.apellidoPaterno ?? \"\");\r\n $store.nombreCompletoCliente = usuario.nombreCompleto ?? \"\";\r\n } catch {} //eslint-disable-line\r\n}\r\n//#endregion\r\n\r\nif ($store.sesionIniciada) cargarDatos();\r\n$store.$subscribe((_mutation, state) => {\r\n if (state.sesionIniciada) cargarDatos();\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.body {\r\n min-height: calc(100vh - 78px - 172px);\r\n background-image: url(\"../../../assets/bgimage.png\");\r\n background-attachment: fixed;\r\n background-position: top;\r\n background-size: cover;\r\n background-repeat: no-repeat;\r\n}\r\n.wa{\r\n border-radius: 50%;\r\n width: 55px;\r\n height: 55px;\r\n position: fixed;\r\n right: 100px;\r\n bottom: 20px;\r\n}\r\n.dropleft {\r\n position: fixed;\r\n top: 50%;\r\n right: 0;\r\n border-top-left-radius: 16px;\r\n border-bottom-left-radius: 16px;\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\r\n z-index: 1000;\r\n .contenido {\r\n width: 0;\r\n transition: width 0.5s;\r\n }\r\n &:hover .contenido {\r\n width: 402px;\r\n }\r\n}\r\n</style>\r\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","export enum TipoBootstrap {\r\n PRIMARY = \"BS_PRIMARY\",\r\n SECONDARY = \"BS_SECONDARY\",\r\n SUCCESS = \"BS_SUCCESS\",\r\n DANGER = \"BS_DANGER\",\r\n WARNING = \"BS_WARNING\",\r\n INFO = \"BS_INFO\"\r\n}\r\n","/*!\n* sweetalert2 v11.6.5\n* Released under the MIT License.\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Sweetalert2 = factory());\n})(this, (function () { 'use strict';\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n\n var privateProps = {\n awaitingPromise: new WeakMap(),\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n const swalPrefix = 'swal2-';\n\n /**\n * @param {string[]} items\n * @returns {object}\n */\n const prefix = items => {\n const result = {};\n for (const i in items) {\n result[items[i]] = swalPrefix + items[i];\n }\n return result;\n };\n const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error', 'no-war']);\n const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n\n const consolePrefix = 'SweetAlert2:';\n\n /**\n * Filter the unique values into a new array\n *\n * @param {Array} arr\n * @returns {Array}\n */\n const uniqueArray = arr => {\n const result = [];\n for (let i = 0; i < arr.length; i++) {\n if (result.indexOf(arr[i]) === -1) {\n result.push(arr[i]);\n }\n }\n return result;\n };\n\n /**\n * Capitalize the first letter of a string\n *\n * @param {string} str\n * @returns {string}\n */\n const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);\n\n /**\n * Standardize console warnings\n *\n * @param {string | Array} message\n */\n const warn = message => {\n console.warn(`${consolePrefix} ${typeof message === 'object' ? message.join(' ') : message}`);\n };\n\n /**\n * Standardize console errors\n *\n * @param {string} message\n */\n const error = message => {\n console.error(`${consolePrefix} ${message}`);\n };\n\n /**\n * Private global state for `warnOnce`\n *\n * @type {Array}\n * @private\n */\n const previousWarnOnceMessages = [];\n\n /**\n * Show a console warning, but only if it hasn't already been shown\n *\n * @param {string} message\n */\n const warnOnce = message => {\n if (!previousWarnOnceMessages.includes(message)) {\n previousWarnOnceMessages.push(message);\n warn(message);\n }\n };\n\n /**\n * Show a one-time console warning about deprecated params/methods\n *\n * @param {string} deprecatedParam\n * @param {string} useInstead\n */\n const warnAboutDeprecation = (deprecatedParam, useInstead) => {\n warnOnce(`\"${deprecatedParam}\" is deprecated and will be removed in the next major release. Please use \"${useInstead}\" instead.`);\n };\n\n /**\n * If `arg` is a function, call it (with no arguments or context) and return the result.\n * Otherwise, just pass the value through\n *\n * @param {Function | any} arg\n * @returns {any}\n */\n const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;\n\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';\n\n /**\n * @param {any} arg\n * @returns {Promise}\n */\n const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);\n\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n const isPromise = arg => arg && Promise.resolve(arg) === arg;\n\n /**\n * Gets the popup container which contains the backdrop and the popup itself.\n *\n * @returns {HTMLElement | null}\n */\n const getContainer = () => document.body.querySelector(`.${swalClasses.container}`);\n\n /**\n * @param {string} selectorString\n * @returns {HTMLElement | null}\n */\n const elementBySelector = selectorString => {\n const container = getContainer();\n return container ? container.querySelector(selectorString) : null;\n };\n\n /**\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n const elementByClass = className => {\n return elementBySelector(`.${className}`);\n };\n\n /**\n * @returns {HTMLElement | null}\n */\n const getPopup = () => elementByClass(swalClasses.popup);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getIcon = () => elementByClass(swalClasses.icon);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getIconContent = () => elementByClass(swalClasses['icon-content']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getTitle = () => elementByClass(swalClasses.title);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getHtmlContainer = () => elementByClass(swalClasses['html-container']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getImage = () => elementByClass(swalClasses.image);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getProgressSteps$1 = () => elementByClass(swalClasses['progress-steps']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getValidationMessage = () => elementByClass(swalClasses['validation-message']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getConfirmButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.confirm}`);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getDenyButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.deny}`);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getInputLabel = () => elementByClass(swalClasses['input-label']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getLoader = () => elementBySelector(`.${swalClasses.loader}`);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getCancelButton = () => elementBySelector(`.${swalClasses.actions} .${swalClasses.cancel}`);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getActions = () => elementByClass(swalClasses.actions);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getFooter = () => elementByClass(swalClasses.footer);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);\n\n /**\n * @returns {HTMLElement | null}\n */\n const getCloseButton = () => elementByClass(swalClasses.close);\n\n // https://github.com/jkup/focusable/blob/master/index.js\n const focusable = `\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n`;\n /**\n * @returns {HTMLElement[]}\n */\n const getFocusableElements = () => {\n const focusableElementsWithTabindex = Array.from(getPopup().querySelectorAll('[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'))\n // sort according to tabindex\n .sort((a, b) => {\n const tabindexA = parseInt(a.getAttribute('tabindex'));\n const tabindexB = parseInt(b.getAttribute('tabindex'));\n if (tabindexA > tabindexB) {\n return 1;\n } else if (tabindexA < tabindexB) {\n return -1;\n }\n return 0;\n });\n const otherFocusableElements = Array.from(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');\n return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible$1(el));\n };\n\n /**\n * @returns {boolean}\n */\n const isModal = () => {\n return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses['toast-shown']) && !hasClass(document.body, swalClasses['no-backdrop']);\n };\n\n /**\n * @returns {boolean}\n */\n const isToast = () => {\n return getPopup() && hasClass(getPopup(), swalClasses.toast);\n };\n\n /**\n * @returns {boolean}\n */\n const isLoading = () => {\n return getPopup().hasAttribute('data-loading');\n };\n\n // Remember state in cases where opening and handling a modal will fiddle with it.\n const states = {\n previousBodyPadding: null\n };\n\n /**\n * Securely set innerHTML of an element\n * https://github.com/sweetalert2/sweetalert2/issues/1926\n *\n * @param {HTMLElement} elem\n * @param {string} html\n */\n const setInnerHtml = (elem, html) => {\n elem.textContent = '';\n if (html) {\n const parser = new DOMParser();\n const parsed = parser.parseFromString(html, `text/html`);\n Array.from(parsed.querySelector('head').childNodes).forEach(child => {\n elem.appendChild(child);\n });\n Array.from(parsed.querySelector('body').childNodes).forEach(child => {\n if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) {\n elem.appendChild(child.cloneNode(true)); // https://github.com/sweetalert2/sweetalert2/issues/2507\n } else {\n elem.appendChild(child);\n }\n });\n }\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {boolean}\n */\n const hasClass = (elem, className) => {\n if (!className) {\n return false;\n }\n const classList = className.split(/\\s+/);\n for (let i = 0; i < classList.length; i++) {\n if (!elem.classList.contains(classList[i])) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n */\n const removeCustomClasses = (elem, params) => {\n Array.from(elem.classList).forEach(className => {\n if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {\n elem.classList.remove(className);\n }\n });\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n * @param {string} className\n */\n const applyCustomClass = (elem, params, className) => {\n removeCustomClasses(elem, params);\n if (params.customClass && params.customClass[className]) {\n if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {\n warn(`Invalid type of customClass.${className}! Expected string or iterable object, got \"${typeof params.customClass[className]}\"`);\n return;\n }\n addClass(elem, params.customClass[className]);\n }\n };\n\n /**\n * @param {HTMLElement} popup\n * @param {import('./renderers/renderInput').InputClass} inputClass\n * @returns {HTMLInputElement | null}\n */\n const getInput$1 = (popup, inputClass) => {\n if (!inputClass) {\n return null;\n }\n switch (inputClass) {\n case 'select':\n case 'textarea':\n case 'file':\n return popup.querySelector(`.${swalClasses.popup} > .${swalClasses[inputClass]}`);\n case 'checkbox':\n return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.checkbox} input`);\n case 'radio':\n return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:checked`) || popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:first-child`);\n case 'range':\n return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.range} input`);\n default:\n return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.input}`);\n }\n };\n\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement} input\n */\n const focusInput = input => {\n input.focus();\n\n // place cursor at end of text in text input\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915\n const val = input.value;\n input.value = '';\n input.value = val;\n }\n };\n\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n * @param {boolean} condition\n */\n const toggleClass = (target, classList, condition) => {\n if (!target || !classList) {\n return;\n }\n if (typeof classList === 'string') {\n classList = classList.split(/\\s+/).filter(Boolean);\n }\n classList.forEach(className => {\n if (Array.isArray(target)) {\n target.forEach(elem => {\n condition ? elem.classList.add(className) : elem.classList.remove(className);\n });\n } else {\n condition ? target.classList.add(className) : target.classList.remove(className);\n }\n });\n };\n\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n const addClass = (target, classList) => {\n toggleClass(target, classList, true);\n };\n\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n const removeClass = (target, classList) => {\n toggleClass(target, classList, false);\n };\n\n /**\n * Get direct child of an element by class name\n *\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n const getDirectChildByClass = (elem, className) => {\n const children = Array.from(elem.children);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof HTMLElement && hasClass(child, className)) {\n return child;\n }\n }\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {string} property\n * @param {*} value\n */\n const applyNumericalStyle = (elem, property, value) => {\n if (value === `${parseInt(value)}`) {\n value = parseInt(value);\n }\n if (value || parseInt(value) === 0) {\n elem.style[property] = typeof value === 'number' ? `${value}px` : value;\n } else {\n elem.style.removeProperty(property);\n }\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {string} display\n */\n const show = function (elem) {\n let display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex';\n elem.style.display = display;\n };\n\n /**\n * @param {HTMLElement} elem\n */\n const hide = elem => {\n elem.style.display = 'none';\n };\n\n /**\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {string} property\n * @param {string} value\n */\n const setStyle = (parent, selector, property, value) => {\n /** @type {HTMLElement} */\n const el = parent.querySelector(selector);\n if (el) {\n el.style[property] = value;\n }\n };\n\n /**\n * @param {HTMLElement} elem\n * @param {any} condition\n * @param {string} display\n */\n const toggle = function (elem, condition) {\n let display = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex';\n condition ? show(elem, display) : hide(elem);\n };\n\n /**\n * borrowed from jquery $(elem).is(':visible') implementation\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n const isVisible$1 = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));\n\n /**\n * @returns {boolean}\n */\n const allButtonsAreHidden = () => !isVisible$1(getConfirmButton()) && !isVisible$1(getDenyButton()) && !isVisible$1(getCancelButton());\n\n /**\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight);\n\n /**\n * borrowed from https://stackoverflow.com/a/46352119\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n const hasCssAnimation = elem => {\n const style = window.getComputedStyle(elem);\n const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');\n const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');\n return animDuration > 0 || transDuration > 0;\n };\n\n /**\n * @param {number} timer\n * @param {boolean} reset\n */\n const animateTimerProgressBar = function (timer) {\n let reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const timerProgressBar = getTimerProgressBar();\n if (isVisible$1(timerProgressBar)) {\n if (reset) {\n timerProgressBar.style.transition = 'none';\n timerProgressBar.style.width = '100%';\n }\n setTimeout(() => {\n timerProgressBar.style.transition = `width ${timer / 1000}s linear`;\n timerProgressBar.style.width = '0%';\n }, 10);\n }\n };\n const stopTimerProgressBar = () => {\n const timerProgressBar = getTimerProgressBar();\n const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = '100%';\n const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100;\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = `${timerProgressBarPercent}%`;\n };\n\n const RESTORE_FOCUS_TIMEOUT = 100;\n\n /** @type {GlobalState} */\n const globalState = {};\n const focusPreviousActiveElement = () => {\n if (globalState.previousActiveElement instanceof HTMLElement) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n };\n\n /**\n * Restore previous active (focused) element\n *\n * @param {boolean} returnFocus\n * @returns {Promise}\n */\n const restoreActiveElement = returnFocus => {\n return new Promise(resolve => {\n if (!returnFocus) {\n return resolve();\n }\n const x = window.scrollX;\n const y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(() => {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n window.scrollTo(x, y);\n });\n };\n\n /**\n * Detect Node env\n *\n * @returns {boolean}\n */\n const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';\n\n const sweetHTML = `\n <div aria-labelledby=\"${swalClasses.title}\" aria-describedby=\"${swalClasses['html-container']}\" class=\"${swalClasses.popup}\" tabindex=\"-1\">\n <button type=\"button\" class=\"${swalClasses.close}\"></button>\n <ul class=\"${swalClasses['progress-steps']}\"></ul>\n <div class=\"${swalClasses.icon}\"></div>\n <img class=\"${swalClasses.image}\" />\n <h2 class=\"${swalClasses.title}\" id=\"${swalClasses.title}\"></h2>\n <div class=\"${swalClasses['html-container']}\" id=\"${swalClasses['html-container']}\"></div>\n <input class=\"${swalClasses.input}\" />\n <input type=\"file\" class=\"${swalClasses.file}\" />\n <div class=\"${swalClasses.range}\">\n <input type=\"range\" />\n <output></output>\n </div>\n <select class=\"${swalClasses.select}\"></select>\n <div class=\"${swalClasses.radio}\"></div>\n <label for=\"${swalClasses.checkbox}\" class=\"${swalClasses.checkbox}\">\n <input type=\"checkbox\" />\n <span class=\"${swalClasses.label}\"></span>\n </label>\n <textarea class=\"${swalClasses.textarea}\"></textarea>\n <div class=\"${swalClasses['validation-message']}\" id=\"${swalClasses['validation-message']}\"></div>\n <div class=\"${swalClasses.actions}\">\n <div class=\"${swalClasses.loader}\"></div>\n <button type=\"button\" class=\"${swalClasses.confirm}\"></button>\n <button type=\"button\" class=\"${swalClasses.deny}\"></button>\n <button type=\"button\" class=\"${swalClasses.cancel}\"></button>\n </div>\n <div class=\"${swalClasses.footer}\"></div>\n <div class=\"${swalClasses['timer-progress-bar-container']}\">\n <div class=\"${swalClasses['timer-progress-bar']}\"></div>\n </div>\n </div>\n`.replace(/(^|\\n)\\s*/g, '');\n\n /**\n * @returns {boolean}\n */\n const resetOldContainer = () => {\n const oldContainer = getContainer();\n if (!oldContainer) {\n return false;\n }\n oldContainer.remove();\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n return true;\n };\n const resetValidationMessage$1 = () => {\n globalState.currentInstance.resetValidationMessage();\n };\n const addInputChangeListeners = () => {\n const popup = getPopup();\n const input = getDirectChildByClass(popup, swalClasses.input);\n const file = getDirectChildByClass(popup, swalClasses.file);\n /** @type {HTMLInputElement} */\n const range = popup.querySelector(`.${swalClasses.range} input`);\n /** @type {HTMLOutputElement} */\n const rangeOutput = popup.querySelector(`.${swalClasses.range} output`);\n const select = getDirectChildByClass(popup, swalClasses.select);\n /** @type {HTMLInputElement} */\n const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`);\n const textarea = getDirectChildByClass(popup, swalClasses.textarea);\n input.oninput = resetValidationMessage$1;\n file.onchange = resetValidationMessage$1;\n select.onchange = resetValidationMessage$1;\n checkbox.onchange = resetValidationMessage$1;\n textarea.oninput = resetValidationMessage$1;\n range.oninput = () => {\n resetValidationMessage$1();\n rangeOutput.value = range.value;\n };\n range.onchange = () => {\n resetValidationMessage$1();\n rangeOutput.value = range.value;\n };\n };\n\n /**\n * @param {string | HTMLElement} target\n * @returns {HTMLElement}\n */\n const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;\n\n /**\n * @param {SweetAlertOptions} params\n */\n const setupAccessibility = params => {\n const popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n\n /**\n * @param {HTMLElement} targetElement\n */\n const setupRTL = targetElement => {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n\n /**\n * Add modal + backdrop + no-war message for Russians to DOM\n *\n * @param {SweetAlertOptions} params\n */\n const init = params => {\n // Clean up the old popup container if it exists\n const oldContainerExisted = resetOldContainer();\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n const container = document.createElement('div');\n container.className = swalClasses.container;\n if (oldContainerExisted) {\n addClass(container, swalClasses['no-transition']);\n }\n setInnerHtml(container, sweetHTML);\n const targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n /**\n * @param {HTMLElement | object | string} param\n * @param {HTMLElement} target\n */\n const parseHtmlToContainer = (param, target) => {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param);\n }\n\n // Object\n else if (typeof param === 'object') {\n handleObject(param, target);\n }\n\n // Plain string\n else if (param) {\n setInnerHtml(target, param);\n }\n };\n\n /**\n * @param {object} param\n * @param {HTMLElement} target\n */\n const handleObject = (param, target) => {\n // JQuery element(s)\n if (param.jquery) {\n handleJqueryElem(target, param);\n }\n\n // For other objects use their string representation\n else {\n setInnerHtml(target, param.toString());\n }\n };\n\n /**\n * @param {HTMLElement} target\n * @param {HTMLElement} elem\n */\n const handleJqueryElem = (target, elem) => {\n target.textContent = '';\n if (0 in elem) {\n for (let i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n /**\n * @returns {'webkitAnimationEnd' | 'animationend' | false}\n */\n const animationEndEvent = (() => {\n // Prevent run in Node env\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n const testEl = document.createElement('div');\n const transEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n // Chrome, Safari and Opera\n animation: 'animationend' // Standard syntax\n };\n\n for (const i in transEndEventNames) {\n if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n return false;\n })();\n\n /**\n * Measure scrollbar width for padding body during modal show/hide\n * https://github.com/twbs/bootstrap/blob/master/js/src/modal.js\n *\n * @returns {number}\n */\n const measureScrollbar = () => {\n const scrollDiv = document.createElement('div');\n scrollDiv.className = swalClasses['scrollbar-measure'];\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderActions = (instance, params) => {\n const actions = getActions();\n const loader = getLoader();\n\n // Actions (buttons) wrapper\n if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {\n hide(actions);\n } else {\n show(actions);\n }\n\n // Custom class\n applyCustomClass(actions, params, 'actions');\n\n // Render all the buttons\n renderButtons(actions, loader, params);\n\n // Loader\n setInnerHtml(loader, params.loaderHtml);\n applyCustomClass(loader, params, 'loader');\n };\n\n /**\n * @param {HTMLElement} actions\n * @param {HTMLElement} loader\n * @param {SweetAlertOptions} params\n */\n function renderButtons(actions, loader, params) {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton();\n\n // Render buttons\n renderButton(confirmButton, 'confirm', params);\n renderButton(denyButton, 'deny', params);\n renderButton(cancelButton, 'cancel', params);\n handleButtonsStyling(confirmButton, denyButton, cancelButton, params);\n if (params.reverseButtons) {\n if (params.toast) {\n actions.insertBefore(cancelButton, confirmButton);\n actions.insertBefore(denyButton, confirmButton);\n } else {\n actions.insertBefore(cancelButton, loader);\n actions.insertBefore(denyButton, loader);\n actions.insertBefore(confirmButton, loader);\n }\n }\n }\n\n /**\n * @param {HTMLElement} confirmButton\n * @param {HTMLElement} denyButton\n * @param {HTMLElement} cancelButton\n * @param {SweetAlertOptions} params\n */\n function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {\n if (!params.buttonsStyling) {\n removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);\n return;\n }\n addClass([confirmButton, denyButton, cancelButton], swalClasses.styled);\n\n // Buttons background colors\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n addClass(confirmButton, swalClasses['default-outline']);\n }\n if (params.denyButtonColor) {\n denyButton.style.backgroundColor = params.denyButtonColor;\n addClass(denyButton, swalClasses['default-outline']);\n }\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n addClass(cancelButton, swalClasses['default-outline']);\n }\n }\n\n /**\n * @param {HTMLElement} button\n * @param {'confirm' | 'deny' | 'cancel'} buttonType\n * @param {SweetAlertOptions} params\n */\n function renderButton(button, buttonType, params) {\n toggle(button, params[`show${capitalizeFirstLetter(buttonType)}Button`], 'inline-block');\n setInnerHtml(button, params[`${buttonType}ButtonText`]); // Set caption text\n button.setAttribute('aria-label', params[`${buttonType}ButtonAriaLabel`]); // ARIA label\n\n // Add buttons custom classes\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params, `${buttonType}Button`);\n addClass(button, params[`${buttonType}ButtonClass`]);\n }\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderCloseButton = (instance, params) => {\n const closeButton = getCloseButton();\n setInnerHtml(closeButton, params.closeButtonHtml);\n\n // Custom class\n applyCustomClass(closeButton, params, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderContainer = (instance, params) => {\n const container = getContainer();\n if (!container) {\n return;\n }\n handleBackdropParam(container, params.backdrop);\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow);\n\n // Custom class\n applyCustomClass(container, params, 'container');\n };\n\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['backdrop']} backdrop\n */\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['position']} position\n */\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['grow']} grow\n */\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n const growClass = `grow-${grow}`;\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n /// <reference path=\"../../../../sweetalert2.d.ts\"/>\n\n /** @type {InputClass[]} */\n const inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderInput = (instance, params) => {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(instance);\n const rerender = !innerParams || params.input !== innerParams.input;\n inputClasses.forEach(inputClass => {\n const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]);\n\n // set attributes\n setAttributes(inputClass, params.inputAttributes);\n\n // set class\n inputContainer.className = swalClasses[inputClass];\n if (rerender) {\n hide(inputContainer);\n }\n });\n if (params.input) {\n if (rerender) {\n showInput(params);\n }\n // set custom class\n setCustomClass(params);\n }\n };\n\n /**\n * @param {SweetAlertOptions} params\n */\n const showInput = params => {\n if (!renderInputType[params.input]) {\n error(`Unexpected type of input! Expected \"text\", \"email\", \"password\", \"number\", \"tel\", \"select\", \"radio\", \"checkbox\", \"textarea\", \"file\" or \"url\", got \"${params.input}\"`);\n return;\n }\n const inputContainer = getInputContainer(params.input);\n const input = renderInputType[params.input](inputContainer, params);\n show(inputContainer);\n\n // input autofocus\n setTimeout(() => {\n focusInput(input);\n });\n };\n\n /**\n * @param {HTMLInputElement} input\n */\n const removeAttributes = input => {\n for (let i = 0; i < input.attributes.length; i++) {\n const attrName = input.attributes[i].name;\n if (!['type', 'value', 'style'].includes(attrName)) {\n input.removeAttribute(attrName);\n }\n }\n };\n\n /**\n * @param {InputClass} inputClass\n * @param {SweetAlertOptions['inputAttributes']} inputAttributes\n */\n const setAttributes = (inputClass, inputAttributes) => {\n const input = getInput$1(getPopup(), inputClass);\n if (!input) {\n return;\n }\n removeAttributes(input);\n for (const attr in inputAttributes) {\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n\n /**\n * @param {SweetAlertOptions} params\n */\n const setCustomClass = params => {\n const inputContainer = getInputContainer(params.input);\n if (typeof params.customClass === 'object') {\n addClass(inputContainer, params.customClass.input);\n }\n };\n\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions} params\n */\n const setInputPlaceholder = (input, params) => {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n\n /**\n * @param {Input} input\n * @param {Input} prependTo\n * @param {SweetAlertOptions} params\n */\n const setInputLabel = (input, prependTo, params) => {\n if (params.inputLabel) {\n input.id = swalClasses.input;\n const label = document.createElement('label');\n const labelClass = swalClasses['input-label'];\n label.setAttribute('for', input.id);\n label.className = labelClass;\n if (typeof params.customClass === 'object') {\n addClass(label, params.customClass.inputLabel);\n }\n label.innerText = params.inputLabel;\n prependTo.insertAdjacentElement('beforebegin', label);\n }\n };\n\n /**\n * @param {SweetAlertOptions['input']} inputType\n * @returns {HTMLElement}\n */\n const getInputContainer = inputType => {\n return getDirectChildByClass(getPopup(), swalClasses[inputType] || swalClasses.input);\n };\n\n /**\n * @param {HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions['inputValue']} inputValue\n */\n const checkAndSetInputValue = (input, inputValue) => {\n if (['string', 'number'].includes(typeof inputValue)) {\n input.value = `${inputValue}`;\n } else if (!isPromise(inputValue)) {\n warn(`Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"${typeof inputValue}\"`);\n }\n };\n\n /** @type {Record<string, (input: Input | HTMLElement, params: SweetAlertOptions) => Input>} */\n const renderInputType = {};\n\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {\n checkAndSetInputValue(input, params.inputValue);\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n renderInputType.file = (input, params) => {\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n return input;\n };\n\n /**\n * @param {HTMLInputElement} range\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n renderInputType.range = (range, params) => {\n const rangeInput = range.querySelector('input');\n const rangeOutput = range.querySelector('output');\n checkAndSetInputValue(rangeInput, params.inputValue);\n rangeInput.type = params.input;\n checkAndSetInputValue(rangeOutput, params.inputValue);\n setInputLabel(rangeInput, range, params);\n return range;\n };\n\n /**\n * @param {HTMLSelectElement} select\n * @param {SweetAlertOptions} params\n * @returns {HTMLSelectElement}\n */\n renderInputType.select = (select, params) => {\n select.textContent = '';\n if (params.inputPlaceholder) {\n const placeholder = document.createElement('option');\n setInnerHtml(placeholder, params.inputPlaceholder);\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n setInputLabel(select, select, params);\n return select;\n };\n\n /**\n * @param {HTMLInputElement} radio\n * @returns {HTMLInputElement}\n */\n renderInputType.radio = radio => {\n radio.textContent = '';\n return radio;\n };\n\n /**\n * @param {HTMLLabelElement} checkboxContainer\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n renderInputType.checkbox = (checkboxContainer, params) => {\n const checkbox = getInput$1(getPopup(), 'checkbox');\n checkbox.value = '1';\n checkbox.id = swalClasses.checkbox;\n checkbox.checked = Boolean(params.inputValue);\n const label = checkboxContainer.querySelector('span');\n setInnerHtml(label, params.inputPlaceholder);\n return checkbox;\n };\n\n /**\n * @param {HTMLTextAreaElement} textarea\n * @param {SweetAlertOptions} params\n * @returns {HTMLTextAreaElement}\n */\n renderInputType.textarea = (textarea, params) => {\n checkAndSetInputValue(textarea, params.inputValue);\n setInputPlaceholder(textarea, params);\n setInputLabel(textarea, textarea, params);\n\n /**\n * @param {HTMLElement} el\n * @returns {number}\n */\n const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);\n\n // https://github.com/sweetalert2/sweetalert2/issues/2291\n setTimeout(() => {\n // https://github.com/sweetalert2/sweetalert2/issues/1699\n if ('MutationObserver' in window) {\n const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);\n const textareaResizeHandler = () => {\n const textareaWidth = textarea.offsetWidth + getMargin(textarea);\n if (textareaWidth > initialPopupWidth) {\n getPopup().style.width = `${textareaWidth}px`;\n } else {\n getPopup().style.width = null;\n }\n };\n new MutationObserver(textareaResizeHandler).observe(textarea, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n });\n return textarea;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderContent = (instance, params) => {\n const htmlContainer = getHtmlContainer();\n applyCustomClass(htmlContainer, params, 'htmlContainer');\n\n // Content as HTML\n if (params.html) {\n parseHtmlToContainer(params.html, htmlContainer);\n show(htmlContainer, 'block');\n }\n\n // Content as plain text\n else if (params.text) {\n htmlContainer.textContent = params.text;\n show(htmlContainer, 'block');\n }\n\n // No content\n else {\n hide(htmlContainer);\n }\n renderInput(instance, params);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderFooter = (instance, params) => {\n const footer = getFooter();\n toggle(footer, params.footer);\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n }\n\n // Custom class\n applyCustomClass(footer, params, 'footer');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderIcon = (instance, params) => {\n const innerParams = privateProps.innerParams.get(instance);\n const icon = getIcon();\n\n // if the given icon already rendered, apply the styling without re-rendering the icon\n if (innerParams && params.icon === innerParams.icon) {\n // Custom or default content\n setContent(icon, params);\n applyStyles(icon, params);\n return;\n }\n if (!params.icon && !params.iconHtml) {\n hide(icon);\n return;\n }\n if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {\n error(`Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"${params.icon}\"`);\n hide(icon);\n return;\n }\n show(icon);\n\n // Custom or default content\n setContent(icon, params);\n applyStyles(icon, params);\n\n // Animate icon\n addClass(icon, params.showClass.icon);\n };\n\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n const applyStyles = (icon, params) => {\n for (const iconType in iconTypes) {\n if (params.icon !== iconType) {\n removeClass(icon, iconTypes[iconType]);\n }\n }\n addClass(icon, iconTypes[params.icon]);\n\n // Icon color\n setColor(icon, params);\n\n // Success icon background color\n adjustSuccessIconBackgroundColor();\n\n // Custom class\n applyCustomClass(icon, params, 'icon');\n };\n\n // Adjust success icon background color to match the popup background color\n const adjustSuccessIconBackgroundColor = () => {\n const popup = getPopup();\n const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n /** @type {NodeListOf<HTMLElement>} */\n const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n for (let i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n const successIconHtml = `\n <div class=\"swal2-success-circular-line-left\"></div>\n <span class=\"swal2-success-line-tip\"></span> <span class=\"swal2-success-line-long\"></span>\n <div class=\"swal2-success-ring\"></div> <div class=\"swal2-success-fix\"></div>\n <div class=\"swal2-success-circular-line-right\"></div>\n`;\n const errorIconHtml = `\n <span class=\"swal2-x-mark\">\n <span class=\"swal2-x-mark-line-left\"></span>\n <span class=\"swal2-x-mark-line-right\"></span>\n </span>\n`;\n\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n const setContent = (icon, params) => {\n let oldContent = icon.innerHTML;\n let newContent;\n if (params.iconHtml) {\n newContent = iconContent(params.iconHtml);\n } else if (params.icon === 'success') {\n newContent = successIconHtml;\n oldContent = oldContent.replace(/ style=\".*?\"/g, ''); // undo adjustSuccessIconBackgroundColor()\n } else if (params.icon === 'error') {\n newContent = errorIconHtml;\n } else {\n const defaultIconHtml = {\n question: '?',\n warning: '!',\n info: 'i'\n };\n newContent = iconContent(defaultIconHtml[params.icon]);\n }\n if (oldContent.trim() !== newContent.trim()) {\n setInnerHtml(icon, newContent);\n }\n };\n\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n const setColor = (icon, params) => {\n if (!params.iconColor) {\n return;\n }\n icon.style.color = params.iconColor;\n icon.style.borderColor = params.iconColor;\n for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {\n setStyle(icon, sel, 'backgroundColor', params.iconColor);\n }\n setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);\n };\n\n /**\n * @param {string} content\n * @returns {string}\n */\n const iconContent = content => `<div class=\"${swalClasses['icon-content']}\">${content}</div>`;\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderImage = (instance, params) => {\n const image = getImage();\n if (!params.imageUrl) {\n hide(image);\n return;\n }\n show(image, '');\n\n // Src, alt\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt);\n\n // Width, height\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight);\n\n // Class\n image.className = swalClasses.image;\n applyCustomClass(image, params, 'image');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderPopup = (instance, params) => {\n const container = getContainer();\n const popup = getPopup();\n\n // Width\n // https://github.com/sweetalert2/sweetalert2/issues/2170\n if (params.toast) {\n applyNumericalStyle(container, 'width', params.width);\n popup.style.width = '100%';\n popup.insertBefore(getLoader(), getIcon());\n } else {\n applyNumericalStyle(popup, 'width', params.width);\n }\n\n // Padding\n applyNumericalStyle(popup, 'padding', params.padding);\n\n // Color\n if (params.color) {\n popup.style.color = params.color;\n }\n\n // Background\n if (params.background) {\n popup.style.background = params.background;\n }\n hide(getValidationMessage());\n\n // Classes\n addClasses$1(popup, params);\n };\n\n /**\n * @param {HTMLElement} popup\n * @param {SweetAlertOptions} params\n */\n const addClasses$1 = (popup, params) => {\n // Default Class + showClass when updating Swal.update({})\n popup.className = `${swalClasses.popup} ${isVisible$1(popup) ? params.showClass.popup : ''}`;\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n }\n\n // Custom class\n applyCustomClass(popup, params, 'popup');\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n }\n\n // Icon class (#1842)\n if (params.icon) {\n addClass(popup, swalClasses[`icon-${params.icon}`]);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderProgressSteps = (instance, params) => {\n const progressStepsContainer = getProgressSteps$1();\n if (!params.progressSteps || params.progressSteps.length === 0) {\n hide(progressStepsContainer);\n return;\n }\n show(progressStepsContainer);\n progressStepsContainer.textContent = '';\n if (params.currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n params.progressSteps.forEach((step, index) => {\n const stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n if (index === params.currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n if (index !== params.progressSteps.length - 1) {\n const lineEl = createLineElement(params);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n\n /**\n * @param {string} step\n * @returns {HTMLLIElement}\n */\n const createStepElement = step => {\n const stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n setInnerHtml(stepEl, step);\n return stepEl;\n };\n\n /**\n * @param {SweetAlertOptions} params\n * @returns {HTMLLIElement}\n */\n const createLineElement = params => {\n const lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n if (params.progressStepsDistance) {\n applyNumericalStyle(lineEl, 'width', params.progressStepsDistance);\n }\n return lineEl;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const renderTitle = (instance, params) => {\n const title = getTitle();\n toggle(title, params.title || params.titleText, 'block');\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n if (params.titleText) {\n title.innerText = params.titleText;\n }\n\n // Custom class\n applyCustomClass(title, params, 'title');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const render = (instance, params) => {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderProgressSteps(instance, params);\n renderIcon(instance, params);\n renderImage(instance, params);\n renderTitle(instance, params);\n renderCloseButton(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n if (typeof params.didRender === 'function') {\n params.didRender(getPopup());\n }\n };\n\n /**\n * Hides loader and shows back the button which was hidden by .showLoading()\n */\n function hideLoading() {\n // do nothing if popup is closed\n const innerParams = privateProps.innerParams.get(this);\n if (!innerParams) {\n return;\n }\n const domCache = privateProps.domCache.get(this);\n hide(domCache.loader);\n if (isToast()) {\n if (innerParams.icon) {\n show(getIcon());\n }\n } else {\n showRelatedButton(domCache);\n }\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.denyButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n const showRelatedButton = domCache => {\n const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));\n if (buttonToReplace.length) {\n show(buttonToReplace[0], 'inline-block');\n } else if (allButtonsAreHidden()) {\n hide(domCache.actions);\n }\n };\n\n /**\n * Gets the input DOM node, this method works with input parameter.\n *\n * @param {SweetAlert2} instance\n * @returns {HTMLElement | null}\n */\n function getInput(instance) {\n const innerParams = privateProps.innerParams.get(instance || this);\n const domCache = privateProps.domCache.get(instance || this);\n if (!domCache) {\n return null;\n }\n return getInput$1(domCache.popup, innerParams.input);\n }\n\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n const isVisible = () => {\n return isVisible$1(getPopup());\n };\n\n /*\n * Global function to click 'Confirm' button\n */\n const clickConfirm = () => getConfirmButton() && getConfirmButton().click();\n\n /*\n * Global function to click 'Deny' button\n */\n const clickDeny = () => getDenyButton() && getDenyButton().click();\n\n /*\n * Global function to click 'Cancel' button\n */\n const clickCancel = () => getCancelButton() && getCancelButton().click();\n\n const DismissReason = Object.freeze({\n cancel: 'cancel',\n backdrop: 'backdrop',\n close: 'close',\n esc: 'esc',\n timer: 'timer'\n });\n\n /**\n * @param {GlobalState} globalState\n */\n const removeKeydownHandler = globalState => {\n if (globalState.keydownTarget && globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {GlobalState} globalState\n * @param {SweetAlertOptions} innerParams\n * @param {*} dismissWith\n */\n const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {\n removeKeydownHandler(globalState);\n if (!innerParams.toast) {\n globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n };\n\n /**\n * @param {SweetAlertOptions} innerParams\n * @param {number} index\n * @param {number} increment\n */\n const setFocus = (innerParams, index, increment) => {\n const focusableElements = getFocusableElements();\n // search for visible elements and select the next possible match\n if (focusableElements.length) {\n index = index + increment;\n\n // rollover to first item\n if (index === focusableElements.length) {\n index = 0;\n\n // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n return focusableElements[index].focus();\n }\n // no visible focusable elements, focus the popup\n getPopup().focus();\n };\n const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];\n const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];\n\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {function} dismissWith\n */\n const keydownHandler = (instance, e, dismissWith) => {\n const innerParams = privateProps.innerParams.get(instance);\n if (!innerParams) {\n return; // This instance has already been destroyed\n }\n\n // Ignore keydown during IME composition\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition\n // https://github.com/sweetalert2/sweetalert2/issues/720\n // https://github.com/sweetalert2/sweetalert2/issues/2406\n if (e.isComposing || e.keyCode === 229) {\n return;\n }\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n }\n\n // ENTER\n if (e.key === 'Enter') {\n handleEnter(instance, e, innerParams);\n }\n\n // TAB\n else if (e.key === 'Tab') {\n handleTab(e, innerParams);\n }\n\n // ARROWS - switch focus between buttons\n else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {\n handleArrows(e.key);\n }\n\n // ESC\n else if (e.key === 'Escape') {\n handleEsc(e, innerParams, dismissWith);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n const handleEnter = (instance, e, innerParams) => {\n // https://github.com/sweetalert2/sweetalert2/issues/2386\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return;\n }\n if (e.target && instance.getInput() && e.target instanceof HTMLElement && e.target.outerHTML === instance.getInput().outerHTML) {\n if (['textarea', 'file'].includes(innerParams.input)) {\n return; // do not submit\n }\n\n clickConfirm();\n e.preventDefault();\n }\n };\n\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n const handleTab = (e, innerParams) => {\n const targetElement = e.target;\n const focusableElements = getFocusableElements();\n let btnIndex = -1;\n for (let i = 0; i < focusableElements.length; i++) {\n if (targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n }\n\n // Cycle to the next button\n if (!e.shiftKey) {\n setFocus(innerParams, btnIndex, 1);\n }\n\n // Cycle to the prev button\n else {\n setFocus(innerParams, btnIndex, -1);\n }\n e.stopPropagation();\n e.preventDefault();\n };\n\n /**\n * @param {string} key\n */\n const handleArrows = key => {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton();\n if (document.activeElement instanceof HTMLElement && ![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {\n return;\n }\n const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';\n let buttonToFocus = document.activeElement;\n for (let i = 0; i < getActions().children.length; i++) {\n buttonToFocus = buttonToFocus[sibling];\n if (!buttonToFocus) {\n return;\n }\n if (buttonToFocus instanceof HTMLButtonElement && isVisible$1(buttonToFocus)) {\n break;\n }\n }\n if (buttonToFocus instanceof HTMLButtonElement) {\n buttonToFocus.focus();\n }\n };\n\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n * @param {function} dismissWith\n */\n const handleEsc = (e, innerParams, dismissWith) => {\n if (callIfFunction(innerParams.allowEscapeKey)) {\n e.preventDefault();\n dismissWith(DismissReason.esc);\n }\n };\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n\n var privateMethods = {\n swalPromiseResolve: new WeakMap(),\n swalPromiseReject: new WeakMap()\n };\n\n // From https://developer.paciellogroup.com/blog/2018/06/the-current-state-of-modal-dialog-accessibility/\n // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n const setAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el === getContainer() || el.contains(getContainer())) {\n return;\n }\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n el.setAttribute('aria-hidden', 'true');\n });\n };\n const unsetAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n\n /* istanbul ignore file */\n\n // Fix iOS scrolling http://stackoverflow.com/q/39626302\n\n const iOSfix = () => {\n const iOS =\n // @ts-ignore\n /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n const offset = document.body.scrollTop;\n document.body.style.top = `${offset * -1}px`;\n addClass(document.body, swalClasses.iosfix);\n lockBodyScroll();\n addBottomPaddingForTallPopups();\n }\n };\n\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1948\n */\n const addBottomPaddingForTallPopups = () => {\n const ua = navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n const iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\n if (iOSSafari) {\n const bottomPanelHeight = 44;\n if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {\n getContainer().style.paddingBottom = `${bottomPanelHeight}px`;\n }\n }\n };\n\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1246\n */\n const lockBodyScroll = () => {\n const container = getContainer();\n let preventTouchMove;\n /**\n * @param {TouchEvent} e\n */\n container.ontouchstart = e => {\n preventTouchMove = shouldPreventTouchMove(e);\n };\n /**\n * @param {TouchEvent} e\n */\n container.ontouchmove = e => {\n if (preventTouchMove) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n };\n\n /**\n * @param {TouchEvent} event\n * @returns {boolean}\n */\n const shouldPreventTouchMove = event => {\n const target = event.target;\n const container = getContainer();\n if (isStylus(event) || isZoom(event)) {\n return false;\n }\n if (target === container) {\n return true;\n }\n if (!isScrollable(container) && target instanceof HTMLElement && target.tagName !== 'INPUT' &&\n // #1603\n target.tagName !== 'TEXTAREA' &&\n // #2266\n !(isScrollable(getHtmlContainer()) &&\n // #1944\n getHtmlContainer().contains(target))) {\n return true;\n }\n return false;\n };\n\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1786\n *\n * @param {*} event\n * @returns {boolean}\n */\n const isStylus = event => {\n return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';\n };\n\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1891\n *\n * @param {TouchEvent} event\n * @returns {boolean}\n */\n const isZoom = event => {\n return event.touches && event.touches.length > 1;\n };\n const undoIOSfix = () => {\n if (hasClass(document.body, swalClasses.iosfix)) {\n const offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n const fixScrollbar = () => {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n }\n // if the body has overflow\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = `${states.previousBodyPadding + measureScrollbar()}px`;\n }\n };\n const undoScrollbar = () => {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = `${states.previousBodyPadding}px`;\n states.previousBodyPadding = null;\n }\n };\n\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(instance, container, returnFocus, didClose) {\n if (isToast()) {\n triggerDidCloseAndDispose(instance, didClose);\n } else {\n restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));\n removeKeydownHandler(globalState);\n }\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n // workaround for #2088\n // for some reason removing the container in Safari will scroll the document to bottom\n if (isSafari) {\n container.setAttribute('style', 'display:none !important');\n container.removeAttribute('class');\n container.innerHTML = '';\n } else {\n container.remove();\n }\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n unsetAriaHidden();\n }\n removeBodyClasses();\n }\n function removeBodyClasses() {\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);\n }\n function close(resolveValue) {\n resolveValue = prepareResolveValue(resolveValue);\n const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n const didClose = triggerClosePopup(this);\n if (this.isAwaitingPromise()) {\n // A swal awaiting for a promise (after a click on Confirm or Deny) cannot be dismissed anymore #2335\n if (!resolveValue.isDismissed) {\n handleAwaitingPromise(this);\n swalPromiseResolve(resolveValue);\n }\n } else if (didClose) {\n // Resolve Swal promise\n swalPromiseResolve(resolveValue);\n }\n }\n function isAwaitingPromise() {\n return !!privateProps.awaitingPromise.get(this);\n }\n const triggerClosePopup = instance => {\n const popup = getPopup();\n if (!popup) {\n return false;\n }\n const innerParams = privateProps.innerParams.get(instance);\n if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {\n return false;\n }\n removeClass(popup, innerParams.showClass.popup);\n addClass(popup, innerParams.hideClass.popup);\n const backdrop = getContainer();\n removeClass(backdrop, innerParams.showClass.backdrop);\n addClass(backdrop, innerParams.hideClass.backdrop);\n handlePopupAnimation(instance, popup, innerParams);\n return true;\n };\n function rejectPromise(error) {\n const rejectPromise = privateMethods.swalPromiseReject.get(this);\n handleAwaitingPromise(this);\n if (rejectPromise) {\n // Reject Swal promise\n rejectPromise(error);\n }\n }\n const handleAwaitingPromise = instance => {\n if (instance.isAwaitingPromise()) {\n privateProps.awaitingPromise.delete(instance);\n // The instance might have been previously partly destroyed, we must resume the destroy process in this case #2335\n if (!privateProps.innerParams.get(instance)) {\n instance._destroy();\n }\n }\n };\n const prepareResolveValue = resolveValue => {\n // When user calls Swal.close()\n if (typeof resolveValue === 'undefined') {\n return {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true\n };\n }\n return Object.assign({\n isConfirmed: false,\n isDenied: false,\n isDismissed: false\n }, resolveValue);\n };\n const handlePopupAnimation = (instance, popup, innerParams) => {\n const container = getContainer();\n // If animation is supported, animate\n const animationIsSupported = animationEndEvent && hasCssAnimation(popup);\n if (typeof innerParams.willClose === 'function') {\n innerParams.willClose(popup);\n }\n if (animationIsSupported) {\n animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);\n }\n };\n const animatePopup = (instance, popup, container, returnFocus, didClose) => {\n globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);\n popup.addEventListener(animationEndEvent, function (e) {\n if (e.target === popup) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n });\n };\n const triggerDidCloseAndDispose = (instance, didClose) => {\n setTimeout(() => {\n if (typeof didClose === 'function') {\n didClose.bind(instance.params)();\n }\n instance._destroy();\n });\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {string[]} buttons\n * @param {boolean} disabled\n */\n function setButtonsDisabled(instance, buttons, disabled) {\n const domCache = privateProps.domCache.get(instance);\n buttons.forEach(button => {\n domCache[button].disabled = disabled;\n });\n }\n\n /**\n * @param {HTMLInputElement} input\n * @param {boolean} disabled\n */\n function setInputDisabled(input, disabled) {\n if (!input) {\n return;\n }\n if (input.type === 'radio') {\n const radiosContainer = input.parentNode.parentNode;\n const radios = radiosContainer.querySelectorAll('input');\n for (let i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);\n }\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);\n }\n function enableInput() {\n setInputDisabled(this.getInput(), false);\n }\n function disableInput() {\n setInputDisabled(this.getInput(), true);\n }\n\n // Show block with validation message\n function showValidationMessage(error) {\n const domCache = privateProps.domCache.get(this);\n const params = privateProps.innerParams.get(this);\n setInnerHtml(domCache.validationMessage, error);\n domCache.validationMessage.className = swalClasses['validation-message'];\n if (params.customClass && params.customClass.validationMessage) {\n addClass(domCache.validationMessage, params.customClass.validationMessage);\n }\n show(domCache.validationMessage);\n const input = this.getInput();\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedby', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n }\n\n // Hide block with validation message\n function resetValidationMessage() {\n const domCache = privateProps.domCache.get(this);\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n const input = this.getInput();\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedby');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps() {\n const domCache = privateProps.domCache.get(this);\n return domCache.progressSteps;\n }\n\n const defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n icon: undefined,\n iconColor: undefined,\n iconHtml: undefined,\n template: undefined,\n toast: false,\n showClass: {\n popup: 'swal2-show',\n backdrop: 'swal2-backdrop-show',\n icon: 'swal2-icon-show'\n },\n hideClass: {\n popup: 'swal2-hide',\n backdrop: 'swal2-backdrop-hide',\n icon: 'swal2-icon-hide'\n },\n customClass: {},\n target: 'body',\n color: undefined,\n backdrop: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showDenyButton: false,\n showCancelButton: false,\n preConfirm: undefined,\n preDeny: undefined,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: undefined,\n denyButtonText: 'No',\n denyButtonAriaLabel: '',\n denyButtonColor: undefined,\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: undefined,\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusDeny: false,\n focusCancel: false,\n returnFocus: true,\n showCloseButton: false,\n closeButtonHtml: '×',\n closeButtonAriaLabel: 'Close this dialog',\n loaderHtml: '',\n showLoaderOnConfirm: false,\n showLoaderOnDeny: false,\n imageUrl: undefined,\n imageWidth: undefined,\n imageHeight: undefined,\n imageAlt: '',\n timer: undefined,\n timerProgressBar: false,\n width: undefined,\n padding: undefined,\n background: undefined,\n input: undefined,\n inputPlaceholder: '',\n inputLabel: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputAttributes: {},\n inputValidator: undefined,\n returnInputValueOnDeny: false,\n validationMessage: undefined,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: undefined,\n progressStepsDistance: undefined,\n willOpen: undefined,\n didOpen: undefined,\n didRender: undefined,\n willClose: undefined,\n didClose: undefined,\n didDestroy: undefined,\n scrollbarPadding: true\n };\n const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];\n const deprecatedParams = {};\n const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];\n\n /**\n * Is valid parameter\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n const isValidParameter = paramName => {\n return Object.prototype.hasOwnProperty.call(defaultParams, paramName);\n };\n\n /**\n * Is valid parameter for Swal.update() method\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n const isUpdatableParameter = paramName => {\n return updatableParams.indexOf(paramName) !== -1;\n };\n\n /**\n * Is deprecated parameter\n *\n * @param {string} paramName\n * @returns {string | undefined}\n */\n const isDeprecatedParameter = paramName => {\n return deprecatedParams[paramName];\n };\n\n /**\n * @param {string} param\n */\n const checkIfParamIsValid = param => {\n if (!isValidParameter(param)) {\n warn(`Unknown parameter \"${param}\"`);\n }\n };\n\n /**\n * @param {string} param\n */\n const checkIfToastParamIsValid = param => {\n if (toastIncompatibleParams.includes(param)) {\n warn(`The parameter \"${param}\" is incompatible with toasts`);\n }\n };\n\n /**\n * @param {string} param\n */\n const checkIfParamIsDeprecated = param => {\n if (isDeprecatedParameter(param)) {\n warnAboutDeprecation(param, isDeprecatedParameter(param));\n }\n };\n\n /**\n * Show relevant warnings for given params\n *\n * @param {SweetAlertOptions} params\n */\n const showWarningsForParams = params => {\n if (params.backdrop === false && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n for (const param in params) {\n checkIfParamIsValid(param);\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n checkIfParamIsDeprecated(param);\n }\n };\n\n /**\n * Updates popup parameters.\n */\n function update(params) {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(this);\n if (!popup || hasClass(popup, innerParams.hideClass.popup)) {\n return warn(`You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.`);\n }\n const validUpdatableParams = filterValidParams(params);\n const updatedParams = Object.assign({}, innerParams, validUpdatableParams);\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: Object.assign({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n const filterValidParams = params => {\n const validUpdatableParams = {};\n Object.keys(params).forEach(param => {\n if (isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(`Invalid parameter to update: ${param}`);\n }\n });\n return validUpdatableParams;\n };\n\n function _destroy() {\n const domCache = privateProps.domCache.get(this);\n const innerParams = privateProps.innerParams.get(this);\n if (!innerParams) {\n disposeWeakMaps(this); // The WeakMaps might have been partly destroyed, we must recall it to dispose any remaining WeakMaps #2335\n return; // This instance has already been destroyed\n }\n\n // Check if there is another Swal closing\n if (domCache.popup && globalState.swalCloseEventFinishedCallback) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n if (typeof innerParams.didDestroy === 'function') {\n innerParams.didDestroy();\n }\n disposeSwal(this);\n }\n\n /**\n * @param {SweetAlert2} instance\n */\n const disposeSwal = instance => {\n disposeWeakMaps(instance);\n // Unset this.params so GC will dispose it (#1569)\n // @ts-ignore\n delete instance.params;\n // Unset globalState props so GC will dispose globalState (#1569)\n delete globalState.keydownHandler;\n delete globalState.keydownTarget;\n // Unset currentInstance\n delete globalState.currentInstance;\n };\n\n /**\n * @param {SweetAlert2} instance\n */\n const disposeWeakMaps = instance => {\n // If the current instance is awaiting a promise result, we keep the privateMethods to call them once the promise result is retrieved #2335\n // @ts-ignore\n if (instance.isAwaitingPromise()) {\n unsetWeakMaps(privateProps, instance);\n privateProps.awaitingPromise.set(instance, true);\n } else {\n unsetWeakMaps(privateMethods, instance);\n unsetWeakMaps(privateProps, instance);\n }\n };\n\n /**\n * @param {object} obj\n * @param {SweetAlert2} instance\n */\n const unsetWeakMaps = (obj, instance) => {\n for (const i in obj) {\n obj[i].delete(instance);\n }\n };\n\n var instanceMethods = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput,\n close: close,\n isAwaitingPromise: isAwaitingPromise,\n rejectPromise: rejectPromise,\n handleAwaitingPromise: handleAwaitingPromise,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage,\n getProgressSteps: getProgressSteps,\n update: update,\n _destroy: _destroy\n });\n\n /**\n * Shows loader (spinner), this is useful with AJAX requests.\n * By default the loader be shown instead of the \"Confirm\" button.\n */\n const showLoading = buttonToReplace => {\n let popup = getPopup();\n if (!popup) {\n new Swal(); // eslint-disable-line no-new\n }\n\n popup = getPopup();\n const loader = getLoader();\n if (isToast()) {\n hide(getIcon());\n } else {\n replaceButton(popup, buttonToReplace);\n }\n show(loader);\n popup.setAttribute('data-loading', 'true');\n popup.setAttribute('aria-busy', 'true');\n popup.focus();\n };\n const replaceButton = (popup, buttonToReplace) => {\n const actions = getActions();\n const loader = getLoader();\n if (!buttonToReplace && isVisible$1(getConfirmButton())) {\n buttonToReplace = getConfirmButton();\n }\n show(actions);\n if (buttonToReplace) {\n hide(buttonToReplace);\n loader.setAttribute('data-button-to-replace', buttonToReplace.className);\n }\n loader.parentNode.insertBefore(loader, buttonToReplace);\n addClass([popup, actions], swalClasses.loading);\n };\n\n /**\n * @typedef { string | number | boolean } InputValue\n */\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const handleInputOptionsAndValue = (instance, params) => {\n if (params.input === 'select' || params.input === 'radio') {\n handleInputOptions(instance, params);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {\n showLoading(getConfirmButton());\n handleInputValue(instance, params);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} innerParams\n * @returns {string | number | File | FileList | null}\n */\n const getInputValue = (instance, innerParams) => {\n const input = instance.getInput();\n if (!input) {\n return null;\n }\n switch (innerParams.input) {\n case 'checkbox':\n return getCheckboxValue(input);\n case 'radio':\n return getRadioValue(input);\n case 'file':\n return getFileValue(input);\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n\n /**\n * @param {HTMLInputElement} input\n * @returns {number}\n */\n const getCheckboxValue = input => input.checked ? 1 : 0;\n\n /**\n * @param {HTMLInputElement} input\n * @returns {string | null}\n */\n const getRadioValue = input => input.checked ? input.value : null;\n\n /**\n * @param {HTMLInputElement} input\n * @returns {FileList | File | null}\n */\n const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const handleInputOptions = (instance, params) => {\n const popup = getPopup();\n /**\n * @param {Record<string, any>} inputOptions\n */\n const processInputOptions = inputOptions => {\n populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);\n };\n if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {\n showLoading(getConfirmButton());\n asPromise(params.inputOptions).then(inputOptions => {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (typeof params.inputOptions === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n const handleInputValue = (instance, params) => {\n const input = instance.getInput();\n hide(input);\n asPromise(params.inputValue).then(inputValue => {\n input.value = params.input === 'number' ? `${parseFloat(inputValue) || 0}` : `${inputValue}`;\n show(input);\n input.focus();\n instance.hideLoading();\n }).catch(err => {\n error(`Error in inputValue promise: ${err}`);\n input.value = '';\n show(input);\n input.focus();\n instance.hideLoading();\n });\n };\n const populateInputOptions = {\n /**\n * @param {HTMLElement} popup\n * @param {Record<string, any>} inputOptions\n * @param {SweetAlertOptions} params\n */\n select: (popup, inputOptions, params) => {\n const select = getDirectChildByClass(popup, swalClasses.select);\n /**\n * @param {HTMLElement} parent\n * @param {string} optionLabel\n * @param {string} optionValue\n */\n const renderOption = (parent, optionLabel, optionValue) => {\n const option = document.createElement('option');\n option.value = optionValue;\n setInnerHtml(option, optionLabel);\n option.selected = isSelected(optionValue, params.inputValue);\n parent.appendChild(option);\n };\n inputOptions.forEach(inputOption => {\n const optionValue = inputOption[0];\n const optionLabel = inputOption[1];\n // <optgroup> spec:\n // https://www.w3.org/TR/html401/interact/forms.html#h-17.6\n // \"...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)...\"\n // check whether this is a <optgroup>\n if (Array.isArray(optionLabel)) {\n // if it is an array, then it is an <optgroup>\n const optgroup = document.createElement('optgroup');\n optgroup.label = optionValue;\n optgroup.disabled = false; // not configurable for now\n select.appendChild(optgroup);\n optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));\n } else {\n // case of <option>\n renderOption(select, optionLabel, optionValue);\n }\n });\n select.focus();\n },\n /**\n * @param {HTMLElement} popup\n * @param {Record<string, any>} inputOptions\n * @param {SweetAlertOptions} params\n */\n radio: (popup, inputOptions, params) => {\n const radio = getDirectChildByClass(popup, swalClasses.radio);\n inputOptions.forEach(inputOption => {\n const radioValue = inputOption[0];\n const radioLabel = inputOption[1];\n const radioInput = document.createElement('input');\n const radioLabelElement = document.createElement('label');\n radioInput.type = 'radio';\n radioInput.name = swalClasses.radio;\n radioInput.value = radioValue;\n if (isSelected(radioValue, params.inputValue)) {\n radioInput.checked = true;\n }\n const label = document.createElement('span');\n setInnerHtml(label, radioLabel);\n label.className = swalClasses.label;\n radioLabelElement.appendChild(radioInput);\n radioLabelElement.appendChild(label);\n radio.appendChild(radioLabelElement);\n });\n const radios = radio.querySelectorAll('input');\n if (radios.length) {\n radios[0].focus();\n }\n }\n };\n\n /**\n * Converts `inputOptions` into an array of `[value, label]`s\n *\n * @param {Record<string, any>} inputOptions\n * @returns {Array<Array<string>>}\n */\n const formatInputOptions = inputOptions => {\n const result = [];\n if (typeof Map !== 'undefined' && inputOptions instanceof Map) {\n inputOptions.forEach((value, key) => {\n let valueFormatted = value;\n if (typeof valueFormatted === 'object') {\n // case of <optgroup>\n valueFormatted = formatInputOptions(valueFormatted);\n }\n result.push([key, valueFormatted]);\n });\n } else {\n Object.keys(inputOptions).forEach(key => {\n let valueFormatted = inputOptions[key];\n if (typeof valueFormatted === 'object') {\n // case of <optgroup>\n valueFormatted = formatInputOptions(valueFormatted);\n }\n result.push([key, valueFormatted]);\n });\n }\n return result;\n };\n\n /**\n * @param {string} optionValue\n * @param {InputValue | Promise<InputValue> | { toPromise: () => InputValue }} inputValue\n * @returns {boolean}\n */\n const isSelected = (optionValue, inputValue) => {\n return inputValue && inputValue.toString() === optionValue.toString();\n };\n\n /**\n * @param {SweetAlert2} instance\n */\n const handleConfirmButtonClick = instance => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableButtons();\n if (innerParams.input) {\n handleConfirmOrDenyWithInput(instance, 'confirm');\n } else {\n confirm(instance, true);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n */\n const handleDenyButtonClick = instance => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableButtons();\n if (innerParams.returnInputValueOnDeny) {\n handleConfirmOrDenyWithInput(instance, 'deny');\n } else {\n deny(instance, false);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {Function} dismissWith\n */\n const handleCancelButtonClick = (instance, dismissWith) => {\n instance.disableButtons();\n dismissWith(DismissReason.cancel);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {'confirm' | 'deny'} type\n */\n const handleConfirmOrDenyWithInput = (instance, type) => {\n const innerParams = privateProps.innerParams.get(instance);\n if (!innerParams.input) {\n error(`The \"input\" parameter is needed to be set when using returnInputValueOn${capitalizeFirstLetter(type)}`);\n return;\n }\n const inputValue = getInputValue(instance, innerParams);\n if (innerParams.inputValidator) {\n handleInputValidator(instance, inputValue, type);\n } else if (!instance.getInput().checkValidity()) {\n instance.enableButtons();\n instance.showValidationMessage(innerParams.validationMessage);\n } else if (type === 'deny') {\n deny(instance, inputValue);\n } else {\n confirm(instance, inputValue);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {string | number | File | FileList | null} inputValue\n * @param {'confirm' | 'deny'} type\n */\n const handleInputValidator = (instance, inputValue, type) => {\n const innerParams = privateProps.innerParams.get(instance);\n instance.disableInput();\n const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));\n validationPromise.then(validationMessage => {\n instance.enableButtons();\n instance.enableInput();\n if (validationMessage) {\n instance.showValidationMessage(validationMessage);\n } else if (type === 'deny') {\n deny(instance, inputValue);\n } else {\n confirm(instance, inputValue);\n }\n });\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n const deny = (instance, value) => {\n const innerParams = privateProps.innerParams.get(instance || undefined);\n if (innerParams.showLoaderOnDeny) {\n showLoading(getDenyButton());\n }\n if (innerParams.preDeny) {\n privateProps.awaitingPromise.set(instance || undefined, true); // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preDeny's promise is received\n const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));\n preDenyPromise.then(preDenyValue => {\n if (preDenyValue === false) {\n instance.hideLoading();\n handleAwaitingPromise(instance);\n } else {\n instance.close({\n isDenied: true,\n value: typeof preDenyValue === 'undefined' ? value : preDenyValue\n });\n }\n }).catch(error => rejectWith(instance || undefined, error));\n } else {\n instance.close({\n isDenied: true,\n value\n });\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n const succeedWith = (instance, value) => {\n instance.close({\n isConfirmed: true,\n value\n });\n };\n\n /**\n *\n * @param {SweetAlert2} instance\n * @param {string} error\n */\n const rejectWith = (instance, error) => {\n // @ts-ignore\n instance.rejectPromise(error);\n };\n\n /**\n *\n * @param {SweetAlert2} instance\n * @param {any} value\n */\n const confirm = (instance, value) => {\n const innerParams = privateProps.innerParams.get(instance || undefined);\n if (innerParams.showLoaderOnConfirm) {\n showLoading();\n }\n if (innerParams.preConfirm) {\n instance.resetValidationMessage();\n privateProps.awaitingPromise.set(instance || undefined, true); // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preConfirm's promise is received\n const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));\n preConfirmPromise.then(preConfirmValue => {\n if (isVisible$1(getValidationMessage()) || preConfirmValue === false) {\n instance.hideLoading();\n handleAwaitingPromise(instance);\n } else {\n succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue);\n }\n }).catch(error => rejectWith(instance || undefined, error));\n } else {\n succeedWith(instance, value);\n }\n };\n\n const handlePopupClick = (instance, domCache, dismissWith) => {\n const innerParams = privateProps.innerParams.get(instance);\n if (innerParams.toast) {\n handleToastClick(instance, domCache, dismissWith);\n } else {\n // Ignore click events that had mousedown on the popup but mouseup on the container\n // This can happen when the user drags a slider\n handleModalMousedown(domCache);\n\n // Ignore click events that had mousedown on the container but mouseup on the popup\n handleContainerMousedown(domCache);\n handleModalClick(instance, domCache, dismissWith);\n }\n };\n const handleToastClick = (instance, domCache, dismissWith) => {\n // Closing toast by internal click\n domCache.popup.onclick = () => {\n const innerParams = privateProps.innerParams.get(instance);\n if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) {\n return;\n }\n dismissWith(DismissReason.close);\n };\n };\n\n /**\n * @param {*} innerParams\n * @returns {boolean}\n */\n const isAnyButtonShown = innerParams => {\n return innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton;\n };\n let ignoreOutsideClick = false;\n const handleModalMousedown = domCache => {\n domCache.popup.onmousedown = () => {\n domCache.container.onmouseup = function (e) {\n domCache.container.onmouseup = undefined;\n // We only check if the mouseup target is the container because usually it doesn't\n // have any other direct children aside of the popup\n if (e.target === domCache.container) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n const handleContainerMousedown = domCache => {\n domCache.container.onmousedown = () => {\n domCache.popup.onmouseup = function (e) {\n domCache.popup.onmouseup = undefined;\n // We also need to check if the mouseup target is a child of the popup\n if (e.target === domCache.popup || domCache.popup.contains(e.target)) {\n ignoreOutsideClick = true;\n }\n };\n };\n };\n const handleModalClick = (instance, domCache, dismissWith) => {\n domCache.container.onclick = e => {\n const innerParams = privateProps.innerParams.get(instance);\n if (ignoreOutsideClick) {\n ignoreOutsideClick = false;\n return;\n }\n if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {\n dismissWith(DismissReason.backdrop);\n }\n };\n };\n\n const isJqueryElement = elem => typeof elem === 'object' && elem.jquery;\n const isElement = elem => elem instanceof Element || isJqueryElement(elem);\n const argsToParams = args => {\n const params = {};\n if (typeof args[0] === 'object' && !isElement(args[0])) {\n Object.assign(params, args[0]);\n } else {\n ['title', 'html', 'icon'].forEach((name, index) => {\n const arg = args[index];\n if (typeof arg === 'string' || isElement(arg)) {\n params[name] = arg;\n } else if (arg !== undefined) {\n error(`Unexpected type of ${name}! Expected \"string\" or \"Element\", got ${typeof arg}`);\n }\n });\n }\n return params;\n };\n\n function fire() {\n const Swal = this; // eslint-disable-line @typescript-eslint/no-this-alias\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Swal(...args);\n }\n\n /**\n * Returns an extended version of `Swal` containing `params` as defaults.\n * Useful for reusing Swal configuration.\n *\n * For example:\n *\n * Before:\n * const textPromptOptions = { input: 'text', showCancelButton: true }\n * const {value: firstName} = await Swal.fire({ ...textPromptOptions, title: 'What is your first name?' })\n * const {value: lastName} = await Swal.fire({ ...textPromptOptions, title: 'What is your last name?' })\n *\n * After:\n * const TextPrompt = Swal.mixin({ input: 'text', showCancelButton: true })\n * const {value: firstName} = await TextPrompt('What is your first name?')\n * const {value: lastName} = await TextPrompt('What is your last name?')\n *\n * @param mixinParams\n */\n function mixin(mixinParams) {\n class MixinSwal extends this {\n _main(params, priorityMixinParams) {\n return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));\n }\n }\n return MixinSwal;\n }\n\n /**\n * If `timer` parameter is set, returns number of milliseconds of timer remained.\n * Otherwise, returns undefined.\n *\n * @returns {number | undefined}\n */\n const getTimerLeft = () => {\n return globalState.timeout && globalState.timeout.getTimerLeft();\n };\n\n /**\n * Stop timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n *\n * @returns {number | undefined}\n */\n const stopTimer = () => {\n if (globalState.timeout) {\n stopTimerProgressBar();\n return globalState.timeout.stop();\n }\n };\n\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n *\n * @returns {number | undefined}\n */\n const resumeTimer = () => {\n if (globalState.timeout) {\n const remaining = globalState.timeout.start();\n animateTimerProgressBar(remaining);\n return remaining;\n }\n };\n\n /**\n * Resume timer. Returns number of milliseconds of timer remained.\n * If `timer` parameter isn't set, returns undefined.\n *\n * @returns {number | undefined}\n */\n const toggleTimer = () => {\n const timer = globalState.timeout;\n return timer && (timer.running ? stopTimer() : resumeTimer());\n };\n\n /**\n * Increase timer. Returns number of milliseconds of an updated timer.\n * If `timer` parameter isn't set, returns undefined.\n *\n * @param {number} n\n * @returns {number | undefined}\n */\n const increaseTimer = n => {\n if (globalState.timeout) {\n const remaining = globalState.timeout.increase(n);\n animateTimerProgressBar(remaining, true);\n return remaining;\n }\n };\n\n /**\n * Check if timer is running. Returns true if timer is running\n * or false if timer is paused or stopped.\n * If `timer` parameter isn't set, returns undefined\n *\n * @returns {boolean}\n */\n const isTimerRunning = () => {\n return globalState.timeout && globalState.timeout.isRunning();\n };\n\n let bodyClickListenerAdded = false;\n const clickHandlers = {};\n function bindClickHandler() {\n let attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template';\n clickHandlers[attr] = this;\n if (!bodyClickListenerAdded) {\n document.body.addEventListener('click', bodyClickListener);\n bodyClickListenerAdded = true;\n }\n }\n const bodyClickListener = event => {\n for (let el = event.target; el && el !== document; el = el.parentNode) {\n for (const attr in clickHandlers) {\n const template = el.getAttribute(attr);\n if (template) {\n clickHandlers[attr].fire({\n template\n });\n return;\n }\n }\n }\n };\n\n var staticMethods = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isValidParameter: isValidParameter,\n isUpdatableParameter: isUpdatableParameter,\n isDeprecatedParameter: isDeprecatedParameter,\n argsToParams: argsToParams,\n getContainer: getContainer,\n getPopup: getPopup,\n getTitle: getTitle,\n getHtmlContainer: getHtmlContainer,\n getImage: getImage,\n getIcon: getIcon,\n getIconContent: getIconContent,\n getInputLabel: getInputLabel,\n getCloseButton: getCloseButton,\n getActions: getActions,\n getConfirmButton: getConfirmButton,\n getDenyButton: getDenyButton,\n getCancelButton: getCancelButton,\n getLoader: getLoader,\n getFooter: getFooter,\n getTimerProgressBar: getTimerProgressBar,\n getFocusableElements: getFocusableElements,\n getValidationMessage: getValidationMessage,\n isLoading: isLoading,\n isVisible: isVisible,\n clickConfirm: clickConfirm,\n clickDeny: clickDeny,\n clickCancel: clickCancel,\n fire: fire,\n mixin: mixin,\n showLoading: showLoading,\n enableLoading: showLoading,\n getTimerLeft: getTimerLeft,\n stopTimer: stopTimer,\n resumeTimer: resumeTimer,\n toggleTimer: toggleTimer,\n increaseTimer: increaseTimer,\n isTimerRunning: isTimerRunning,\n bindClickHandler: bindClickHandler\n });\n\n class Timer {\n /**\n * @param {Function} callback\n * @param {number} delay\n */\n constructor(callback, delay) {\n this.callback = callback;\n this.remaining = delay;\n this.running = false;\n this.start();\n }\n start() {\n if (!this.running) {\n this.running = true;\n this.started = new Date();\n this.id = setTimeout(this.callback, this.remaining);\n }\n return this.remaining;\n }\n stop() {\n if (this.running) {\n this.running = false;\n clearTimeout(this.id);\n this.remaining -= new Date().getTime() - this.started.getTime();\n }\n return this.remaining;\n }\n increase(n) {\n const running = this.running;\n if (running) {\n this.stop();\n }\n this.remaining += n;\n if (running) {\n this.start();\n }\n return this.remaining;\n }\n getTimerLeft() {\n if (this.running) {\n this.stop();\n this.start();\n }\n return this.remaining;\n }\n isRunning() {\n return this.running;\n }\n }\n\n const swalStringParams = ['swal-title', 'swal-html', 'swal-footer'];\n\n /**\n * @param {SweetAlertOptions} params\n * @returns {SweetAlertOptions}\n */\n const getTemplateParams = params => {\n /** @type {HTMLTemplateElement} */\n const template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template;\n if (!template) {\n return {};\n }\n /** @type {DocumentFragment} */\n const templateContent = template.content;\n showWarningsForElements(templateContent);\n const result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalParams = templateContent => {\n const result = {};\n /** @type {HTMLElement[]} */\n const swalParams = Array.from(templateContent.querySelectorAll('swal-param'));\n swalParams.forEach(param => {\n showWarningsForAttributes(param, ['name', 'value']);\n const paramName = param.getAttribute('name');\n const value = param.getAttribute('value');\n if (typeof defaultParams[paramName] === 'boolean') {\n result[paramName] = value !== 'false';\n } else if (typeof defaultParams[paramName] === 'object') {\n result[paramName] = JSON.parse(value);\n } else {\n result[paramName] = value;\n }\n });\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalFunctionParams = templateContent => {\n const result = {};\n /** @type {HTMLElement[]} */\n const swalFunctions = Array.from(templateContent.querySelectorAll('swal-function-param'));\n swalFunctions.forEach(param => {\n const paramName = param.getAttribute('name');\n const value = param.getAttribute('value');\n result[paramName] = new Function(`return ${value}`)();\n });\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalButtons = templateContent => {\n const result = {};\n /** @type {HTMLElement[]} */\n const swalButtons = Array.from(templateContent.querySelectorAll('swal-button'));\n swalButtons.forEach(button => {\n showWarningsForAttributes(button, ['type', 'color', 'aria-label']);\n const type = button.getAttribute('type');\n result[`${type}ButtonText`] = button.innerHTML;\n result[`show${capitalizeFirstLetter(type)}Button`] = true;\n if (button.hasAttribute('color')) {\n result[`${type}ButtonColor`] = button.getAttribute('color');\n }\n if (button.hasAttribute('aria-label')) {\n result[`${type}ButtonAriaLabel`] = button.getAttribute('aria-label');\n }\n });\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalImage = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n const image = templateContent.querySelector('swal-image');\n if (image) {\n showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']);\n if (image.hasAttribute('src')) {\n result.imageUrl = image.getAttribute('src');\n }\n if (image.hasAttribute('width')) {\n result.imageWidth = image.getAttribute('width');\n }\n if (image.hasAttribute('height')) {\n result.imageHeight = image.getAttribute('height');\n }\n if (image.hasAttribute('alt')) {\n result.imageAlt = image.getAttribute('alt');\n }\n }\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalIcon = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n const icon = templateContent.querySelector('swal-icon');\n if (icon) {\n showWarningsForAttributes(icon, ['type', 'color']);\n if (icon.hasAttribute('type')) {\n /** @type {SweetAlertIcon} */\n // @ts-ignore\n result.icon = icon.getAttribute('type');\n }\n if (icon.hasAttribute('color')) {\n result.iconColor = icon.getAttribute('color');\n }\n result.iconHtml = icon.innerHTML;\n }\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @returns {SweetAlertOptions}\n */\n const getSwalInput = templateContent => {\n const result = {};\n /** @type {HTMLElement} */\n const input = templateContent.querySelector('swal-input');\n if (input) {\n showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']);\n /** @type {SweetAlertInput} */\n // @ts-ignore\n result.input = input.getAttribute('type') || 'text';\n if (input.hasAttribute('label')) {\n result.inputLabel = input.getAttribute('label');\n }\n if (input.hasAttribute('placeholder')) {\n result.inputPlaceholder = input.getAttribute('placeholder');\n }\n if (input.hasAttribute('value')) {\n result.inputValue = input.getAttribute('value');\n }\n }\n /** @type {HTMLElement[]} */\n const inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option'));\n if (inputOptions.length) {\n result.inputOptions = {};\n inputOptions.forEach(option => {\n showWarningsForAttributes(option, ['value']);\n const optionValue = option.getAttribute('value');\n const optionName = option.innerHTML;\n result.inputOptions[optionValue] = optionName;\n });\n }\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n * @param {string[]} paramNames\n * @returns {SweetAlertOptions}\n */\n const getSwalStringParams = (templateContent, paramNames) => {\n const result = {};\n for (const i in paramNames) {\n const paramName = paramNames[i];\n /** @type {HTMLElement} */\n const tag = templateContent.querySelector(paramName);\n if (tag) {\n showWarningsForAttributes(tag, []);\n result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim();\n }\n }\n return result;\n };\n\n /**\n * @param {DocumentFragment} templateContent\n */\n const showWarningsForElements = templateContent => {\n const allowedElements = swalStringParams.concat(['swal-param', 'swal-function-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']);\n Array.from(templateContent.children).forEach(el => {\n const tagName = el.tagName.toLowerCase();\n if (!allowedElements.includes(tagName)) {\n warn(`Unrecognized element <${tagName}>`);\n }\n });\n };\n\n /**\n * @param {HTMLElement} el\n * @param {string[]} allowedAttributes\n */\n const showWarningsForAttributes = (el, allowedAttributes) => {\n Array.from(el.attributes).forEach(attribute => {\n if (allowedAttributes.indexOf(attribute.name) === -1) {\n warn([`Unrecognized attribute \"${attribute.name}\" on <${el.tagName.toLowerCase()}>.`, `${allowedAttributes.length ? `Allowed attributes are: ${allowedAttributes.join(', ')}` : 'To set the value, use HTML within the element.'}`]);\n }\n });\n };\n\n const SHOW_CLASS_TIMEOUT = 10;\n\n /**\n * Open popup, add necessary classes and styles, fix scrollbar\n *\n * @param {SweetAlertOptions} params\n */\n const openPopup = params => {\n const container = getContainer();\n const popup = getPopup();\n if (typeof params.willOpen === 'function') {\n params.willOpen(popup);\n }\n const bodyStyles = window.getComputedStyle(document.body);\n const initialBodyOverflow = bodyStyles.overflowY;\n addClasses(container, popup, params);\n\n // scrolling is 'hidden' until animation is done, after that 'auto'\n setTimeout(() => {\n setScrollingVisibility(container, popup);\n }, SHOW_CLASS_TIMEOUT);\n if (isModal()) {\n fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);\n setAriaHidden();\n }\n if (!isToast() && !globalState.previousActiveElement) {\n globalState.previousActiveElement = document.activeElement;\n }\n if (typeof params.didOpen === 'function') {\n setTimeout(() => params.didOpen(popup));\n }\n removeClass(container, swalClasses['no-transition']);\n };\n\n /**\n * @param {AnimationEvent} event\n */\n const swalOpenAnimationFinished = event => {\n const popup = getPopup();\n if (event.target !== popup) {\n return;\n }\n const container = getContainer();\n popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished);\n container.style.overflowY = 'auto';\n };\n\n /**\n * @param {HTMLElement} container\n * @param {HTMLElement} popup\n */\n const setScrollingVisibility = (container, popup) => {\n if (animationEndEvent && hasCssAnimation(popup)) {\n container.style.overflowY = 'hidden';\n popup.addEventListener(animationEndEvent, swalOpenAnimationFinished);\n } else {\n container.style.overflowY = 'auto';\n }\n };\n\n /**\n * @param {HTMLElement} container\n * @param {boolean} scrollbarPadding\n * @param {string} initialBodyOverflow\n */\n const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {\n iOSfix();\n if (scrollbarPadding && initialBodyOverflow !== 'hidden') {\n fixScrollbar();\n }\n\n // sweetalert2/issues/1247\n setTimeout(() => {\n container.scrollTop = 0;\n });\n };\n\n /**\n * @param {HTMLElement} container\n * @param {HTMLElement} popup\n * @param {SweetAlertOptions} params\n */\n const addClasses = (container, popup, params) => {\n addClass(container, params.showClass.backdrop);\n // this workaround with opacity is needed for https://github.com/sweetalert2/sweetalert2/issues/2059\n popup.style.setProperty('opacity', '0', 'important');\n show(popup, 'grid');\n setTimeout(() => {\n // Animate popup right after showing it\n addClass(popup, params.showClass.popup);\n // and remove the opacity workaround\n popup.style.removeProperty('opacity');\n }, SHOW_CLASS_TIMEOUT); // 10ms in order to fix #2062\n\n addClass([document.documentElement, document.body], swalClasses.shown);\n if (params.heightAuto && params.backdrop && !params.toast) {\n addClass([document.documentElement, document.body], swalClasses['height-auto']);\n }\n };\n\n var defaultInputValidators = {\n /**\n * @param {string} string\n * @param {string} validationMessage\n * @returns {Promise<void | string>}\n */\n email: (string, validationMessage) => {\n return /^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z0-9-]{2,24}$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address');\n },\n /**\n * @param {string} string\n * @param {string} validationMessage\n * @returns {Promise<void | string>}\n */\n url: (string, validationMessage) => {\n // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013\n return /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL');\n }\n };\n\n /**\n * @param {SweetAlertOptions} params\n */\n function setDefaultInputValidators(params) {\n // Use default `inputValidator` for supported input types if not provided\n if (!params.inputValidator) {\n Object.keys(defaultInputValidators).forEach(key => {\n if (params.input === key) {\n params.inputValidator = defaultInputValidators[key];\n }\n });\n }\n }\n\n /**\n * @param {SweetAlertOptions} params\n */\n function validateCustomTargetElement(params) {\n // Determine if the custom target element is valid\n if (!params.target || typeof params.target === 'string' && !document.querySelector(params.target) || typeof params.target !== 'string' && !params.target.appendChild) {\n warn('Target parameter is not valid, defaulting to \"body\"');\n params.target = 'body';\n }\n }\n\n /**\n * Set type, text and actions on popup\n *\n * @param {SweetAlertOptions} params\n */\n function setParameters(params) {\n setDefaultInputValidators(params);\n\n // showLoaderOnConfirm && preConfirm\n if (params.showLoaderOnConfirm && !params.preConfirm) {\n warn('showLoaderOnConfirm is set to true, but preConfirm is not defined.\\n' + 'showLoaderOnConfirm should be used together with preConfirm, see usage example:\\n' + 'https://sweetalert2.github.io/#ajax-request');\n }\n validateCustomTargetElement(params);\n\n // Replace newlines with <br> in title\n if (typeof params.title === 'string') {\n params.title = params.title.split('\\n').join('<br />');\n }\n init(params);\n }\n\n let currentInstance;\n class SweetAlert {\n constructor() {\n // Prevent run in Node env\n if (typeof window === 'undefined') {\n return;\n }\n currentInstance = this;\n\n // @ts-ignore\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const outerParams = Object.freeze(this.constructor.argsToParams(args));\n Object.defineProperties(this, {\n params: {\n value: outerParams,\n writable: false,\n enumerable: true,\n configurable: true\n }\n });\n\n // @ts-ignore\n const promise = currentInstance._main(currentInstance.params);\n privateProps.promise.set(this, promise);\n }\n _main(userParams) {\n let mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n showWarningsForParams(Object.assign({}, mixinParams, userParams));\n if (globalState.currentInstance) {\n // @ts-ignore\n globalState.currentInstance._destroy();\n if (isModal()) {\n unsetAriaHidden();\n }\n }\n globalState.currentInstance = currentInstance;\n const innerParams = prepareParams(userParams, mixinParams);\n setParameters(innerParams);\n Object.freeze(innerParams);\n\n // clear the previous timer\n if (globalState.timeout) {\n globalState.timeout.stop();\n delete globalState.timeout;\n }\n\n // clear the restore focus timeout\n clearTimeout(globalState.restoreFocusTimeout);\n const domCache = populateDomCache(currentInstance);\n render(currentInstance, innerParams);\n privateProps.innerParams.set(currentInstance, innerParams);\n return swalPromise(currentInstance, domCache, innerParams);\n }\n\n // `catch` cannot be the name of a module export, so we define our thenable methods here instead\n then(onFulfilled) {\n const promise = privateProps.promise.get(this);\n return promise.then(onFulfilled);\n }\n finally(onFinally) {\n const promise = privateProps.promise.get(this);\n return promise.finally(onFinally);\n }\n }\n\n /**\n * @param {SweetAlert2} instance\n * @param {DomCache} domCache\n * @param {SweetAlertOptions} innerParams\n * @returns {Promise}\n */\n const swalPromise = (instance, domCache, innerParams) => {\n return new Promise((resolve, reject) => {\n // functions to handle all closings/dismissals\n /**\n * @param {DismissReason} dismiss\n */\n const dismissWith = dismiss => {\n // @ts-ignore\n instance.close({\n isDismissed: true,\n dismiss\n });\n };\n privateMethods.swalPromiseResolve.set(instance, resolve);\n privateMethods.swalPromiseReject.set(instance, reject);\n domCache.confirmButton.onclick = () => {\n handleConfirmButtonClick(instance);\n };\n domCache.denyButton.onclick = () => {\n handleDenyButtonClick(instance);\n };\n domCache.cancelButton.onclick = () => {\n handleCancelButtonClick(instance, dismissWith);\n };\n domCache.closeButton.onclick = () => {\n // @ts-ignore\n dismissWith(DismissReason.close);\n };\n handlePopupClick(instance, domCache, dismissWith);\n addKeydownHandler(instance, globalState, innerParams, dismissWith);\n handleInputOptionsAndValue(instance, innerParams);\n openPopup(innerParams);\n setupTimer(globalState, innerParams, dismissWith);\n initFocus(domCache, innerParams);\n\n // Scroll container to top on open (#1247, #1946)\n setTimeout(() => {\n domCache.container.scrollTop = 0;\n });\n });\n };\n\n /**\n * @param {SweetAlertOptions} userParams\n * @param {SweetAlertOptions} mixinParams\n * @returns {SweetAlertOptions}\n */\n const prepareParams = (userParams, mixinParams) => {\n const templateParams = getTemplateParams(userParams);\n const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131\n params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);\n params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);\n return params;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @returns {DomCache}\n */\n const populateDomCache = instance => {\n const domCache = {\n popup: getPopup(),\n container: getContainer(),\n actions: getActions(),\n confirmButton: getConfirmButton(),\n denyButton: getDenyButton(),\n cancelButton: getCancelButton(),\n loader: getLoader(),\n closeButton: getCloseButton(),\n validationMessage: getValidationMessage(),\n progressSteps: getProgressSteps$1()\n };\n privateProps.domCache.set(instance, domCache);\n return domCache;\n };\n\n /**\n * @param {GlobalState} globalState\n * @param {SweetAlertOptions} innerParams\n * @param {Function} dismissWith\n */\n const setupTimer = (globalState, innerParams, dismissWith) => {\n const timerProgressBar = getTimerProgressBar();\n hide(timerProgressBar);\n if (innerParams.timer) {\n globalState.timeout = new Timer(() => {\n dismissWith('timer');\n delete globalState.timeout;\n }, innerParams.timer);\n if (innerParams.timerProgressBar) {\n show(timerProgressBar);\n applyCustomClass(timerProgressBar, innerParams, 'timerProgressBar');\n setTimeout(() => {\n if (globalState.timeout && globalState.timeout.running) {\n // timer can be already stopped or unset at this point\n animateTimerProgressBar(innerParams.timer);\n }\n });\n }\n }\n };\n\n /**\n * @param {DomCache} domCache\n * @param {SweetAlertOptions} innerParams\n */\n const initFocus = (domCache, innerParams) => {\n if (innerParams.toast) {\n return;\n }\n if (!callIfFunction(innerParams.allowEnterKey)) {\n blurActiveElement();\n return;\n }\n if (!focusButton(domCache, innerParams)) {\n setFocus(innerParams, -1, 1);\n }\n };\n\n /**\n * @param {DomCache} domCache\n * @param {SweetAlertOptions} innerParams\n * @returns {boolean}\n */\n const focusButton = (domCache, innerParams) => {\n if (innerParams.focusDeny && isVisible$1(domCache.denyButton)) {\n domCache.denyButton.focus();\n return true;\n }\n if (innerParams.focusCancel && isVisible$1(domCache.cancelButton)) {\n domCache.cancelButton.focus();\n return true;\n }\n if (innerParams.focusConfirm && isVisible$1(domCache.confirmButton)) {\n domCache.confirmButton.focus();\n return true;\n }\n return false;\n };\n const blurActiveElement = () => {\n if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === 'function') {\n document.activeElement.blur();\n }\n };\n\n // Dear russian users visiting russian sites. Let's have fun.\n if (typeof window !== 'undefined' && /^ru\\b/.test(navigator.language) && location.host.match(/\\.(ru|su|xn--p1ai)$/)) {\n setTimeout(() => {\n document.body.style.pointerEvents = 'none';\n const ukrainianAnthem = document.createElement('audio');\n ukrainianAnthem.src = 'https://discoveric.ru/upload/anthem/61/61-1.mp3';\n ukrainianAnthem.loop = true;\n document.body.appendChild(ukrainianAnthem);\n setTimeout(() => {\n ukrainianAnthem.play().catch(() => {\n // ignore\n });\n }, 2500);\n }, 500);\n }\n\n // Assign instance methods from src/instanceMethods/*.js to prototype\n Object.assign(SweetAlert.prototype, instanceMethods);\n\n // Assign static methods from src/staticMethods/*.js to constructor\n Object.assign(SweetAlert, staticMethods);\n\n // Proxy to instance methods to constructor, for now, for backwards compatibility\n Object.keys(instanceMethods).forEach(key => {\n /**\n * @param {...any} args\n * @returns {any}\n */\n SweetAlert[key] = function () {\n if (currentInstance) {\n return currentInstance[key](...arguments);\n }\n };\n });\n SweetAlert.DismissReason = DismissReason;\n SweetAlert.version = '11.6.5';\n\n const Swal = SweetAlert;\n // @ts-ignore\n Swal.default = Swal;\n\n return Swal;\n\n}));\nif (typeof this !== 'undefined' && this.Sweetalert2){this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2}\n\"undefined\"!=typeof document&&function(e,t){var n=e.createElement(\"style\");if(e.getElementsByTagName(\"head\")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,\".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}.swal2-container{display:grid;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;box-sizing:border-box;grid-template-areas:\\\"top-start top top-end\\\" \\\"center-start center center-end\\\" \\\"bottom-start bottom-center bottom-end\\\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:rgba(0,0,0,0) !important}.swal2-container.swal2-top-start,.swal2-container.swal2-center-start,.swal2-container.swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}.swal2-container.swal2-top,.swal2-container.swal2-center,.swal2-container.swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}.swal2-container.swal2-top-end,.swal2-container.swal2-center-end,.swal2-container.swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}.swal2-container.swal2-top-start>.swal2-popup{align-self:start}.swal2-container.swal2-top>.swal2-popup{grid-column:2;align-self:start;justify-self:center}.swal2-container.swal2-top-end>.swal2-popup,.swal2-container.swal2-top-right>.swal2-popup{grid-column:3;align-self:start;justify-self:end}.swal2-container.swal2-center-start>.swal2-popup,.swal2-container.swal2-center-left>.swal2-popup{grid-row:2;align-self:center}.swal2-container.swal2-center>.swal2-popup{grid-column:2;grid-row:2;align-self:center;justify-self:center}.swal2-container.swal2-center-end>.swal2-popup,.swal2-container.swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;align-self:center;justify-self:end}.swal2-container.swal2-bottom-start>.swal2-popup,.swal2-container.swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}.swal2-container.swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;justify-self:center;align-self:end}.swal2-container.swal2-bottom-end>.swal2-popup,.swal2-container.swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;align-self:end;justify-self:end}.swal2-container.swal2-grow-row>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}.swal2-container.swal2-grow-column>.swal2-popup,.swal2-container.swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}.swal2-container.swal2-no-transition{transition:none !important}.swal2-popup{display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:none}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-title{position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}.swal2-styled{margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}.swal2-styled.swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}.swal2-styled.swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}.swal2-styled.swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled:focus{outline:none}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:2em auto 1em}.swal2-close{z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:serif;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}.swal2-close:hover{transform:none;background:rgba(0,0,0,0);color:#f27474}.swal2-close:focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}.swal2-input,.swal2-file,.swal2-textarea,.swal2-select,.swal2-radio,.swal2-checkbox{margin:1em 2em 3px}.swal2-input,.swal2-file,.swal2-textarea{box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-input.swal2-inputerror,.swal2-file.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}.swal2-input:focus,.swal2-file:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}.swal2-input::placeholder,.swal2-file::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em 2em 3px;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}.swal2-radio,.swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-radio label,.swal2-checkbox label{margin:0 .6em;font-size:1.125em}.swal2-radio input,.swal2-checkbox input{flex-shrink:0;margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto 0}.swal2-validation-message{align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\\\"!\\\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}\");","/**\r\n * Enumerations for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n/**\r\n * Object that store the helper enumerations\r\n * @type {{ allowedTagList: [string], keyCode: {}, fromCharCodeKeyCode: [string], keyName: {} }}\r\n */\r\nconst AutoNumericEnum = {};\r\n\r\n/**\r\n * List of allowed tag on which autoNumeric can be used.\r\n */\r\nAutoNumericEnum.allowedTagList = [\r\n 'b',\r\n 'caption',\r\n 'cite',\r\n 'code',\r\n 'const',\r\n 'dd',\r\n 'del',\r\n 'div',\r\n 'dfn',\r\n 'dt',\r\n 'em',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'input',\r\n 'ins',\r\n 'kdb',\r\n 'label',\r\n 'li',\r\n 'option',\r\n 'output',\r\n 'p',\r\n 'q',\r\n 's',\r\n 'sample',\r\n 'span',\r\n 'strong',\r\n 'td',\r\n 'th',\r\n 'u',\r\n];\r\nObject.freeze(AutoNumericEnum.allowedTagList);\r\nObject.defineProperty(AutoNumericEnum, 'allowedTagList', { configurable: false, writable: false });\r\n\r\n/**\r\n * Wrapper variable that hold named keyboard keys with their respective keyCode as seen in DOM events.\r\n * cf. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\r\n *\r\n * This deprecated information is used for obsolete browsers.\r\n * @deprecated\r\n */\r\nAutoNumericEnum.keyCode = {\r\n Backspace : 8,\r\n Tab : 9,\r\n // No 10, 11\r\n // 12 === NumpadEqual on Windows\r\n // 12 === NumLock on Mac\r\n Enter : 13,\r\n // 14 reserved, but not used\r\n // 15 does not exists\r\n Shift : 16,\r\n Ctrl : 17,\r\n Alt : 18,\r\n Pause : 19,\r\n CapsLock : 20,\r\n // 21, 22, 23, 24, 25 : Asiatic key codes\r\n // 26 does not exists\r\n Esc : 27,\r\n // 28, 29, 30, 31 : Convert, NonConvert, Accept and ModeChange keys\r\n Space : 32,\r\n PageUp : 33,\r\n PageDown : 34,\r\n End : 35,\r\n Home : 36,\r\n LeftArrow : 37,\r\n UpArrow : 38,\r\n RightArrow : 39,\r\n DownArrow : 40,\r\n Insert : 45,\r\n Delete : 46,\r\n num0 : 48,\r\n num1 : 49,\r\n num2 : 50,\r\n num3 : 51,\r\n num4 : 52,\r\n num5 : 53,\r\n num6 : 54,\r\n num7 : 55,\r\n num8 : 56,\r\n num9 : 57,\r\n a : 65,\r\n b : 66,\r\n c : 67,\r\n d : 68,\r\n e : 69,\r\n f : 70,\r\n g : 71,\r\n h : 72,\r\n i : 73,\r\n j : 74,\r\n k : 75,\r\n l : 76,\r\n m : 77,\r\n n : 78,\r\n o : 79,\r\n p : 80,\r\n q : 81,\r\n r : 82,\r\n s : 83,\r\n t : 84,\r\n u : 85,\r\n v : 86,\r\n w : 87,\r\n x : 88,\r\n y : 89,\r\n z : 90,\r\n OSLeft : 91,\r\n OSRight : 92,\r\n ContextMenu : 93,\r\n numpad0 : 96,\r\n numpad1 : 97,\r\n numpad2 : 98,\r\n numpad3 : 99,\r\n numpad4 : 100,\r\n numpad5 : 101,\r\n numpad6 : 102,\r\n numpad7 : 103,\r\n numpad8 : 104,\r\n numpad9 : 105,\r\n MultiplyNumpad: 106,\r\n PlusNumpad : 107,\r\n MinusNumpad : 109,\r\n DotNumpad : 110,\r\n SlashNumpad : 111,\r\n F1 : 112,\r\n F2 : 113,\r\n F3 : 114,\r\n F4 : 115,\r\n F5 : 116,\r\n F6 : 117,\r\n F7 : 118,\r\n F8 : 119,\r\n F9 : 120,\r\n F10 : 121,\r\n F11 : 122,\r\n F12 : 123,\r\n NumLock : 144,\r\n ScrollLock : 145,\r\n HyphenFirefox : 173, // On the latest Linux and Windows OS, cf. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode and https://bugzilla.mozilla.org/show_bug.cgi?id=787504 and https://stackoverflow.com/a/35473259/2834898\r\n MyComputer : 182,\r\n MyCalculator : 183,\r\n Semicolon : 186,\r\n Equal : 187,\r\n Comma : 188,\r\n Hyphen : 189,\r\n Dot : 190,\r\n Slash : 191,\r\n Backquote : 192,\r\n LeftBracket : 219,\r\n Backslash : 220,\r\n RightBracket : 221,\r\n Quote : 222,\r\n Command : 224,\r\n AltGraph : 225,\r\n AndroidDefault: 229, // Android Chrome returns the same keycode number 229 for all keys pressed\r\n};\r\nObject.freeze(AutoNumericEnum.keyCode);\r\nObject.defineProperty(AutoNumericEnum, 'keyCode', { configurable: false, writable: false });\r\n\r\n/**\r\n * This object is the reverse of `keyCode`, and is used to translate the key code to named keys when no valid characters can be obtained by `String.fromCharCode`.\r\n * This object keys correspond to the `event.keyCode` number, and returns the corresponding key name (à la event.key)\r\n */\r\nAutoNumericEnum.fromCharCodeKeyCode = {\r\n 0 : 'LaunchCalculator',\r\n 8 : 'Backspace',\r\n 9 : 'Tab',\r\n 13 : 'Enter',\r\n 16 : 'Shift',\r\n 17 : 'Ctrl',\r\n 18 : 'Alt',\r\n 19 : 'Pause',\r\n 20 : 'CapsLock',\r\n 27 : 'Escape',\r\n 32 : ' ',\r\n 33 : 'PageUp',\r\n 34 : 'PageDown',\r\n 35 : 'End',\r\n 36 : 'Home',\r\n 37 : 'ArrowLeft',\r\n 38 : 'ArrowUp',\r\n 39 : 'ArrowRight',\r\n 40 : 'ArrowDown',\r\n 45 : 'Insert',\r\n 46 : 'Delete',\r\n 48 : '0',\r\n 49 : '1',\r\n 50 : '2',\r\n 51 : '3',\r\n 52 : '4',\r\n 53 : '5',\r\n 54 : '6',\r\n 55 : '7',\r\n 56 : '8',\r\n 57 : '9',\r\n // 65: 'a',\r\n // 66: 'b',\r\n // 67: 'c',\r\n // 68: 'd',\r\n // 69: 'e',\r\n // 70: 'f',\r\n // 71: 'g',\r\n // 72: 'h',\r\n // 73: 'i',\r\n // 74: 'j',\r\n // 75: 'k',\r\n // 76: 'l',\r\n // 77: 'm',\r\n // 78: 'n',\r\n // 79: 'o',\r\n // 80: 'p',\r\n // 81: 'q',\r\n // 82: 'r',\r\n // 83: 's',\r\n // 84: 't',\r\n // 85: 'u',\r\n // 86: 'v',\r\n // 87: 'w',\r\n // 88: 'x',\r\n // 89: 'y',\r\n // 90: 'z',\r\n 91 : 'OS', // Note: Firefox and Chrome reports 'OS' instead of 'OSLeft'\r\n 92 : 'OSRight',\r\n 93 : 'ContextMenu',\r\n 96 : '0',\r\n 97 : '1',\r\n 98 : '2',\r\n 99 : '3',\r\n 100: '4',\r\n 101: '5',\r\n 102: '6',\r\n 103: '7',\r\n 104: '8',\r\n 105: '9',\r\n 106: '*',\r\n 107: '+',\r\n 109: '-', // The 'NumpadSubtract' code\r\n 110: '.',\r\n 111: '/',\r\n 112: 'F1',\r\n 113: 'F2',\r\n 114: 'F3',\r\n 115: 'F4',\r\n 116: 'F5',\r\n 117: 'F6',\r\n 118: 'F7',\r\n 119: 'F8',\r\n 120: 'F9',\r\n 121: 'F10',\r\n 122: 'F11',\r\n 123: 'F12',\r\n 144: 'NumLock',\r\n 145: 'ScrollLock',\r\n 173: '-', // The 'Minus' sign on Firefox. This is only needed when using the Selenium bot though.\r\n 182: 'MyComputer',\r\n 183: 'MyCalculator',\r\n 186: ';',\r\n 187: '=',\r\n 188: ',',\r\n 189: '-', // The 'Minus' sign on all other browsers\r\n 190: '.',\r\n 191: '/',\r\n 192: '`',\r\n 219: '[',\r\n 220: '\\\\',\r\n 221: ']',\r\n 222: '\\'',\r\n 224: 'Meta',\r\n 225: 'AltGraph',\r\n};\r\nObject.freeze(AutoNumericEnum.fromCharCodeKeyCode);\r\nObject.defineProperty(AutoNumericEnum, 'fromCharCodeKeyCode', { configurable: false, writable: false });\r\n\r\n/**\r\n * Wrapper variable that hold named keyboard keys with their respective key name (as set in KeyboardEvent.key).\r\n * Those names are listed here :\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\r\n */\r\nAutoNumericEnum.keyName = {\r\n // Special values\r\n Unidentified : 'Unidentified',\r\n AndroidDefault: 'AndroidDefault',\r\n\r\n // Modifier keys\r\n Alt : 'Alt',\r\n AltGr : 'AltGraph',\r\n CapsLock : 'CapsLock', // Under Chrome, e.key is empty for CapsLock\r\n Ctrl : 'Control',\r\n Fn : 'Fn',\r\n FnLock : 'FnLock',\r\n Hyper : 'Hyper', // 'OS' under Firefox\r\n Meta : 'Meta',\r\n OSLeft : 'OS',\r\n OSRight : 'OS',\r\n Command : 'OS',\r\n NumLock : 'NumLock',\r\n ScrollLock: 'ScrollLock',\r\n Shift : 'Shift',\r\n Super : 'Super', // 'OS' under Firefox\r\n Symbol : 'Symbol',\r\n SymbolLock: 'SymbolLock',\r\n\r\n // Whitespace keys\r\n Enter: 'Enter',\r\n Tab : 'Tab',\r\n Space: ' ', // 'Spacebar' for Firefox <37, and IE9\r\n\r\n // Navigation keys\r\n LeftArrow : 'ArrowLeft', // 'Left' for Firefox <=36, and IE9\r\n UpArrow : 'ArrowUp', // 'Up' for Firefox <=36, and IE9\r\n RightArrow: 'ArrowRight', // 'Right' for Firefox <=36, and IE9\r\n DownArrow : 'ArrowDown', // 'Down' for Firefox <=36, and IE9\r\n End : 'End',\r\n Home : 'Home',\r\n PageUp : 'PageUp',\r\n PageDown : 'PageDown',\r\n\r\n // Editing keys\r\n Backspace: 'Backspace',\r\n Clear : 'Clear',\r\n Copy : 'Copy',\r\n CrSel : 'CrSel', // 'Crsel' for Firefox <=36, and IE9\r\n Cut : 'Cut',\r\n Delete : 'Delete', // 'Del' for Firefox <=36, and IE9\r\n EraseEof : 'EraseEof',\r\n ExSel : 'ExSel', // 'Exsel' for Firefox <=36, and IE9\r\n Insert : 'Insert',\r\n Paste : 'Paste',\r\n Redo : 'Redo',\r\n Undo : 'Undo',\r\n\r\n // UI keys\r\n Accept : 'Accept',\r\n Again : 'Again',\r\n Attn : 'Attn', // 'Unidentified' for Firefox, Chrome, and IE9 ('KanaMode' when using the Japanese keyboard layout)\r\n Cancel : 'Cancel',\r\n ContextMenu: 'ContextMenu', // 'Apps' for Firefox <=36, and IE9\r\n Esc : 'Escape', // 'Esc' for Firefox <=36, and IE9\r\n Execute : 'Execute',\r\n Find : 'Find',\r\n Finish : 'Finish', // 'Unidentified' for Firefox, Chrome, and IE9 ('Katakana' when using the Japanese keyboard layout)\r\n Help : 'Help',\r\n Pause : 'Pause',\r\n Play : 'Play',\r\n Props : 'Props',\r\n Select : 'Select',\r\n ZoomIn : 'ZoomIn',\r\n ZoomOut : 'ZoomOut',\r\n\r\n // Device keys\r\n BrightnessDown: 'BrightnessDown',\r\n BrightnessUp : 'BrightnessUp',\r\n Eject : 'Eject',\r\n LogOff : 'LogOff',\r\n Power : 'Power',\r\n PowerOff : 'PowerOff',\r\n PrintScreen : 'PrintScreen',\r\n Hibernate : 'Hibernate', // 'Unidentified' for Firefox <=37\r\n Standby : 'Standby', // 'Unidentified' for Firefox <=36, and IE9\r\n WakeUp : 'WakeUp',\r\n\r\n // IME and composition keys\r\n Compose: 'Compose',\r\n Dead : 'Dead',\r\n\r\n // Function keys\r\n F1 : 'F1',\r\n F2 : 'F2',\r\n F3 : 'F3',\r\n F4 : 'F4',\r\n F5 : 'F5',\r\n F6 : 'F6',\r\n F7 : 'F7',\r\n F8 : 'F8',\r\n F9 : 'F9',\r\n F10: 'F10',\r\n F11: 'F11',\r\n F12: 'F12',\r\n\r\n // Document keys\r\n Print: 'Print',\r\n\r\n // 'Normal' keys\r\n num0 : '0',\r\n num1 : '1',\r\n num2 : '2',\r\n num3 : '3',\r\n num4 : '4',\r\n num5 : '5',\r\n num6 : '6',\r\n num7 : '7',\r\n num8 : '8',\r\n num9 : '9',\r\n a : 'a',\r\n b : 'b',\r\n c : 'c',\r\n d : 'd',\r\n e : 'e',\r\n f : 'f',\r\n g : 'g',\r\n h : 'h',\r\n i : 'i',\r\n j : 'j',\r\n k : 'k',\r\n l : 'l',\r\n m : 'm',\r\n n : 'n',\r\n o : 'o',\r\n p : 'p',\r\n q : 'q',\r\n r : 'r',\r\n s : 's',\r\n t : 't',\r\n u : 'u',\r\n v : 'v',\r\n w : 'w',\r\n x : 'x',\r\n y : 'y',\r\n z : 'z',\r\n A : 'A',\r\n B : 'B',\r\n C : 'C',\r\n D : 'D',\r\n E : 'E',\r\n F : 'F',\r\n G : 'G',\r\n H : 'H',\r\n I : 'I',\r\n J : 'J',\r\n K : 'K',\r\n L : 'L',\r\n M : 'M',\r\n N : 'N',\r\n O : 'O',\r\n P : 'P',\r\n Q : 'Q',\r\n R : 'R',\r\n S : 'S',\r\n T : 'T',\r\n U : 'U',\r\n V : 'V',\r\n W : 'W',\r\n X : 'X',\r\n Y : 'Y',\r\n Z : 'Z',\r\n Semicolon : ';',\r\n Equal : '=',\r\n Comma : ',',\r\n Hyphen : '-',\r\n Minus : '-',\r\n Plus : '+',\r\n Dot : '.',\r\n Slash : '/',\r\n Backquote : '`',\r\n LeftParenthesis : '(',\r\n RightParenthesis: ')',\r\n LeftBracket : '[',\r\n RightBracket : ']',\r\n Backslash : '\\\\',\r\n Quote : '\\'',\r\n\r\n // Numeric keypad keys\r\n numpad0 : '0',\r\n numpad1 : '1',\r\n numpad2 : '2',\r\n numpad3 : '3',\r\n numpad4 : '4',\r\n numpad5 : '5',\r\n numpad6 : '6',\r\n numpad7 : '7',\r\n numpad8 : '8',\r\n numpad9 : '9',\r\n NumpadDot : '.',\r\n NumpadDotAlt : ',', // Modern browsers automatically adapt the character sent by this key to the decimal character of the current language\r\n NumpadMultiply : '*',\r\n NumpadPlus : '+',\r\n NumpadMinus : '-',\r\n NumpadSubtract : '-',\r\n NumpadSlash : '/',\r\n NumpadDotObsoleteBrowsers : 'Decimal',\r\n NumpadMultiplyObsoleteBrowsers: 'Multiply',\r\n NumpadPlusObsoleteBrowsers : 'Add',\r\n NumpadMinusObsoleteBrowsers : 'Subtract',\r\n NumpadSlashObsoleteBrowsers : 'Divide',\r\n\r\n // Special arrays for quicker tests\r\n _allFnKeys : ['F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12'],\r\n _someNonPrintableKeys: ['Tab', 'Enter', 'Shift', 'ShiftLeft', 'ShiftRight', 'Control', 'ControlLeft', 'ControlRight', 'Alt', 'AltLeft', 'AltRight', 'Pause', 'CapsLock', 'Escape'],\r\n _directionKeys : ['PageUp', 'PageDown', 'End', 'Home', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'],\r\n};\r\nObject.freeze(AutoNumericEnum.keyName._allFnKeys);\r\nObject.freeze(AutoNumericEnum.keyName._someNonPrintableKeys);\r\nObject.freeze(AutoNumericEnum.keyName._directionKeys);\r\nObject.freeze(AutoNumericEnum.keyName);\r\nObject.defineProperty(AutoNumericEnum, 'keyName', { configurable: false, writable: false });\r\n\r\nObject.freeze(AutoNumericEnum);\r\n\r\nexport default AutoNumericEnum;\r\n","/**\r\n * Helper functions for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumericEnum from './AutoNumericEnum';\r\n\r\n/**\r\n * Static class that holds all the helper functions autoNumeric uses.\r\n * Note : none of the functions in there are aware of any autoNumeric internals (which means there are no references to autoNumeric-specific info like options names or data structures).\r\n */\r\nexport default class AutoNumericHelper {\r\n /**\r\n * Return `true` if the `value` is null\r\n *\r\n * @static\r\n * @param {*} value The value to test\r\n * @returns {boolean} Return `true` if the `value` is null, FALSE otherwise\r\n */\r\n static isNull(value) {\r\n return value === null;\r\n }\r\n\r\n /**\r\n * Return `true` if the `value` is undefined\r\n *\r\n * @static\r\n * @param {*} value The value to test\r\n * @returns {boolean} Return `true` if the `value` is undefined, FALSE otherwise\r\n */\r\n static isUndefined(value) {\r\n return value === void(0);\r\n }\r\n\r\n /**\r\n * Return `true` if the `value` is undefined, null or empty\r\n *\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n static isUndefinedOrNullOrEmpty(value) {\r\n return value === null || value === void(0) || '' === value;\r\n }\r\n\r\n /**\r\n * Return `true` if the given parameter is a String\r\n *\r\n * @param {*} str\r\n * @returns {boolean}\r\n */\r\n static isString(str) {\r\n return (typeof str === 'string' || str instanceof String);\r\n }\r\n /**\r\n * Return `true` if the `value` is an empty string ''\r\n *\r\n * @static\r\n * @param {*} value The value to test\r\n * @returns {boolean} Return `true` if the `value` is an empty string '', FALSE otherwise\r\n */\r\n static isEmptyString(value) {\r\n return value === '';\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a boolean\r\n *\r\n * @static\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n static isBoolean(value) {\r\n return typeof(value) === 'boolean';\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a string 'true' or 'false'\r\n *\r\n * This function accepts any cases for those strings.\r\n * @param {string} value\r\n * @returns {boolean}\r\n */\r\n static isTrueOrFalseString(value) {\r\n const lowercaseValue = String(value).toLowerCase();\r\n return lowercaseValue === 'true' || lowercaseValue === 'false';\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is an object\r\n *\r\n * @param {*} reference\r\n * @returns {boolean}\r\n */\r\n static isObject(reference) {\r\n return typeof reference === 'object' && reference !== null && !Array.isArray(reference);\r\n }\r\n\r\n /**\r\n * Return `true` if the given object is empty\r\n * cf. http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object and http://jsperf.com/empty-object-test\r\n *\r\n * @param {object} obj\r\n * @returns {boolean}\r\n */\r\n static isEmptyObj(obj) {\r\n for (const prop in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a real number (and not a numeric string).\r\n *\r\n * @param {*} n\r\n * @returns {boolean}\r\n */\r\n static isNumberStrict(n) {\r\n return typeof n === 'number';\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a number (or a number written as a string).\r\n *\r\n * @param {*} n\r\n * @returns {boolean}\r\n */\r\n static isNumber(n) {\r\n return !this.isArray(n) && !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n /**\r\n * Return `true` if the given character is a number (0 to 9)\r\n *\r\n * @param {char} char\r\n * @returns {boolean}\r\n */\r\n static isDigit(char) {\r\n return /\\d/.test(char);\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a number (or a number written as a string).\r\n * This version also accepts Arabic and Persian numbers.\r\n *\r\n * @param {*} n\r\n * @returns {boolean}\r\n */\r\n static isNumberOrArabic(n) {\r\n const latinConvertedNumber = this.arabicToLatinNumbers(n, false, true, true);\r\n return this.isNumber(latinConvertedNumber);\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is an integer (and not a float).\r\n *\r\n * @param {*} n\r\n * @returns {boolean}\r\n */\r\n static isInt(n) {\r\n return typeof n === 'number' && parseFloat(n) === parseInt(n, 10) && !isNaN(n);\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a function.\r\n *\r\n * @param {function} func\r\n * @returns {boolean}\r\n */\r\n static isFunction(func) {\r\n return typeof func === 'function';\r\n }\r\n\r\n /**\r\n * Return `true` if the current browser is the obsolete Internet Explorer 11 (IE11) one\r\n * cf. https://stackoverflow.com/a/21825207/2834898\r\n *\r\n * @returns {boolean}\r\n */\r\n static isIE11() {\r\n // noinspection JSUnresolvedVariable\r\n return typeof window !== 'undefined' && !!window.MSInputMethodContext && !!document.documentMode;\r\n }\r\n\r\n /**\r\n * Return `true` is the string `str` contains the string `needle`\r\n * Note: this function does not coerce the parameters types\r\n *\r\n * @param {string} str\r\n * @param {string} needle\r\n * @returns {boolean}\r\n */\r\n static contains(str, needle) {\r\n //TODO Use `Array.prototype.includes()` when available (cf. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)\r\n if (!this.isString(str) || !this.isString(needle) || str === '' || needle === '') {\r\n return false;\r\n }\r\n\r\n return str.indexOf(needle) !== -1;\r\n }\r\n\r\n /**\r\n * Return `true` if the `needle` is in the array\r\n *\r\n * @param {*} needle\r\n * @param {Array} array\r\n * @returns {boolean}\r\n */\r\n static isInArray(needle, array) {\r\n if (!this.isArray(array) || array === [] || this.isUndefined(needle)) {\r\n return false;\r\n }\r\n\r\n return array.indexOf(needle) !== -1;\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is an Array\r\n * //TODO Replace this by the default `Array.isArray()` function?\r\n *\r\n * @param {*} arr\r\n * @throws Error\r\n * @returns {*|boolean}\r\n */\r\n static isArray(arr) {\r\n if (Object.prototype.toString.call([]) === '[object Array]') { // Make sure an array has a class attribute of [object Array]\r\n // Test passed, now check if is an Array\r\n return Array.isArray(arr) || (typeof arr === 'object' && Object.prototype.toString.call(arr) === '[object Array]');\r\n }\r\n else {\r\n throw new Error('toString message changed for Object Array'); // Verify that the string returned by `toString` does not change in the future (cf. http://stackoverflow.com/a/8365215)\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a DOM element\r\n * cf. http://stackoverflow.com/a/4754104/2834898\r\n *\r\n * @param {*} obj\r\n * @returns {boolean}\r\n */\r\n static isElement(obj) {\r\n // return !!(obj && obj.nodeName);\r\n // return obj && 'nodeType' in obj;\r\n // return obj instanceof Element || obj instanceof HTMLInputElement || obj instanceof HTMLElement;\r\n if (typeof Element === 'undefined') {\r\n // This test is needed in environnements where the Element object does not exist (ie. in web workers)\r\n return false;\r\n }\r\n\r\n return obj instanceof Element;\r\n }\r\n\r\n /**\r\n * Return `true` in the given DOM element is an <input>.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static isInputElement(domElement) {\r\n return this.isElement(domElement) && domElement.tagName.toLowerCase() === 'input';\r\n }\r\n\r\n /**\r\n * Return `true` if the parameter is a string that represents a float number, and that number has a decimal part\r\n *\r\n * @param {string} str\r\n * @returns {boolean}\r\n */\r\n // static hasDecimals(str) {\r\n // const [, decimalPart] = str.split('.');\r\n // return !isUndefined(decimalPart);\r\n // }\r\n\r\n /**\r\n * Return the number of decimal places if the parameter is a string that represents a float number, and that number has a decimal part.\r\n *\r\n * @param {string} str\r\n * @returns {int}\r\n */\r\n static decimalPlaces(str) {\r\n const [, decimalPart] = str.split('.');\r\n if (!this.isUndefined(decimalPart)) {\r\n return decimalPart.length;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Return the index of the first non-zero decimal place in the given value.\r\n * The index starts after the decimal point, if any, and begins at '1'.\r\n * If no decimal places are found in the value, this function returns `0`.\r\n *\r\n * @example\r\n * indexFirstNonZeroDecimalPlace('0.00') -> 0\r\n * indexFirstNonZeroDecimalPlace('1.00') -> 0\r\n * indexFirstNonZeroDecimalPlace('0.12') -> 1\r\n * indexFirstNonZeroDecimalPlace('0.1234') -> 1\r\n * indexFirstNonZeroDecimalPlace('0.01234') -> 2\r\n * indexFirstNonZeroDecimalPlace('0.001234') -> 3\r\n * indexFirstNonZeroDecimalPlace('0.0001234') -> 4\r\n *\r\n * @param {number} value\r\n * @returns {Number|number}\r\n */\r\n static indexFirstNonZeroDecimalPlace(value) {\r\n const [, decimalPart] = String(Math.abs(value)).split('.');\r\n\r\n if (this.isUndefined(decimalPart)) {\r\n return 0;\r\n }\r\n\r\n let result = decimalPart.lastIndexOf('0');\r\n if (result === -1) {\r\n result = 0;\r\n } else {\r\n result += 2;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the code for the key used to generate the given event.\r\n *\r\n * @param {Event} event\r\n * @returns {string|Number}\r\n */\r\n static keyCodeNumber(event) {\r\n // `event.keyCode` and `event.which` are deprecated, `KeyboardEvent.key` (https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) must be used now\r\n // Also, do note that Firefox generate a 'keypress' event (e.keyCode === 0) for the keys that do not print a character (ie. 'Insert', 'Delete', 'Fn' keys, 'PageUp', 'PageDown' etc.). 'Shift' on the other hand does not generate a keypress event.\r\n return (typeof event.which === 'undefined')?event.keyCode:event.which;\r\n }\r\n\r\n /**\r\n * Return the character from the event key code.\r\n * If the KeyboardEvent does not represent a printable character, then the key name is used (ie. 'Meta', 'Shift', 'F1', etc.)\r\n * @example character(50) => '2'\r\n *\r\n * @param {KeyboardEvent} event\r\n * @returns {string}\r\n */\r\n static character(event) {\r\n let result;\r\n if (event.key === 'Unidentified' || event.key === void(0) || this.isSeleniumBot()) {\r\n //XXX The selenium geckodriver does not understand `event.key`, hence when using it, we need to rely on the old deprecated `keyCode` attribute, cf. upstream issue https://github.com/mozilla/geckodriver/issues/440\r\n // Use the old deprecated keyCode property, if the new `key` one is not supported\r\n const keyCode = this.keyCodeNumber(event);\r\n if (keyCode === AutoNumericEnum.keyCode.AndroidDefault) {\r\n return AutoNumericEnum.keyName.AndroidDefault;\r\n }\r\n\r\n const potentialResult = AutoNumericEnum.fromCharCodeKeyCode[keyCode];\r\n if (!AutoNumericHelper.isUndefinedOrNullOrEmpty(potentialResult)) {\r\n // Since `String.fromCharCode` do not return named keys for some keys ('Escape' and 'Enter' for instance), we convert the characters to the key names\r\n result = potentialResult;\r\n } else {\r\n result = String.fromCharCode(keyCode);\r\n }\r\n } else {\r\n let browser;\r\n switch (event.key) {\r\n // Manages all the special cases for obsolete browsers that return the non-standard names\r\n case 'Add':\r\n result = AutoNumericEnum.keyName.NumpadPlus;\r\n break;\r\n case 'Apps':\r\n result = AutoNumericEnum.keyName.ContextMenu;\r\n break;\r\n case 'Crsel':\r\n result = AutoNumericEnum.keyName.CrSel;\r\n break;\r\n case 'Decimal':\r\n if (event.char) {\r\n // this fixes #602\r\n result = event.char;\r\n } else {\r\n result = AutoNumericEnum.keyName.NumpadDot;\r\n }\r\n break;\r\n case 'Del':\r\n browser = this.browser();\r\n if ((browser.name === 'firefox' && browser.version <= 36) ||\r\n (browser.name === 'ie' && browser.version <= 9)) {\r\n // Special workaround for the obsolete browser IE11 which output a 'Delete' key when using the numpad 'dot' one! This fixes issue #401\r\n // This workaround break the usage of the 'Delete' key for Firefox <=36, and IE9, since those browser send 'Del' instead of 'Delete', therefore we only use it for those obsolete browsers\r\n result = AutoNumericEnum.keyName.Dot;\r\n } else {\r\n result = AutoNumericEnum.keyName.Delete;\r\n }\r\n break;\r\n case 'Divide':\r\n result = AutoNumericEnum.keyName.NumpadSlash;\r\n break;\r\n case 'Down':\r\n result = AutoNumericEnum.keyName.DownArrow;\r\n break;\r\n case 'Esc':\r\n result = AutoNumericEnum.keyName.Esc;\r\n break;\r\n case 'Exsel':\r\n result = AutoNumericEnum.keyName.ExSel;\r\n break;\r\n case 'Left':\r\n result = AutoNumericEnum.keyName.LeftArrow;\r\n break;\r\n case 'Meta':\r\n case 'Super':\r\n result = AutoNumericEnum.keyName.OSLeft;\r\n break;\r\n case 'Multiply':\r\n result = AutoNumericEnum.keyName.NumpadMultiply;\r\n break;\r\n case 'Right':\r\n result = AutoNumericEnum.keyName.RightArrow;\r\n break;\r\n case 'Spacebar':\r\n result = AutoNumericEnum.keyName.Space;\r\n break;\r\n case 'Subtract':\r\n result = AutoNumericEnum.keyName.NumpadMinus;\r\n break;\r\n case 'Up':\r\n result = AutoNumericEnum.keyName.UpArrow;\r\n break;\r\n default:\r\n // The normal case\r\n result = event.key;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return an object containing the name and version of the current browser.\r\n * @example `browserVersion()` => { name: 'Firefox', version: '42' }\r\n * Based on http://stackoverflow.com/a/38080051/2834898\r\n *\r\n * @returns {{ name: string, version: string }}\r\n */\r\n static browser() {\r\n const ua = navigator.userAgent;\r\n let tem;\r\n let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n\r\n if (/trident/i.test(M[1])) {\r\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n return { name: 'ie', version: (tem[1] || '') };\r\n }\r\n\r\n if (M[1] === 'Chrome') {\r\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n if (tem !== null) {\r\n return { name: tem[1].replace('OPR', 'opera'), version: tem[2] };\r\n }\r\n }\r\n\r\n M = M[2]?[M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];\r\n if ((tem = ua.match(/version\\/(\\d+)/i)) !== null) {\r\n M.splice(1, 1, tem[1]);\r\n }\r\n\r\n return { name: M[0].toLowerCase(), version: M[1] };\r\n }\r\n\r\n /**\r\n * Check if the browser is controlled by Selenium.\r\n * Note: This only works within the geckodriver.\r\n * cf. http://stackoverflow.com/questions/33225947/can-a-website-detect-when-you-are-using-selenium-with-chromedriver\r\n *\r\n * @returns {boolean}\r\n */\r\n static isSeleniumBot() {\r\n // noinspection JSUnresolvedVariable\r\n return window.navigator.webdriver === true;\r\n }\r\n\r\n /**\r\n * Return `true` if the given number is negative, or if the given string contains a negative sign :\r\n * - everywhere in the string (by default), or\r\n * - on the first character only if the `checkEverywhere` parameter is set to `false`.\r\n *\r\n * Note: `-0` is not a negative number since it's equal to `0`.\r\n *\r\n * @param {number|string} numberOrNumericString A Number, or a number represented by a string\r\n * @param {string} negativeSignCharacter The single character that represent the negative sign\r\n * @param {boolean} checkEverywhere If TRUE, then the negative sign is search everywhere in the numeric string (this is needed for instance if the string is '1234.56-')\r\n * @returns {boolean}\r\n */\r\n static isNegative(numberOrNumericString, negativeSignCharacter = '-', checkEverywhere = true) {\r\n if (numberOrNumericString === negativeSignCharacter) {\r\n return true;\r\n }\r\n\r\n if (numberOrNumericString === '') {\r\n return false;\r\n }\r\n\r\n if (AutoNumericHelper.isNumber(numberOrNumericString)) {\r\n return numberOrNumericString < 0;\r\n }\r\n\r\n if (checkEverywhere) {\r\n return this.contains(numberOrNumericString, negativeSignCharacter);\r\n }\r\n\r\n return this.isNegativeStrict(numberOrNumericString, negativeSignCharacter);\r\n }\r\n\r\n /**\r\n * Return `true` if the given string contains a negative sign on the first character (on the far left).\r\n *\r\n * @example isNegativeStrict('1234.56') => false\r\n * @example isNegativeStrict('1234.56-') => false\r\n * @example isNegativeStrict('-1234.56') => true\r\n * @example isNegativeStrict('-1,234.56 €') => true\r\n *\r\n * @param {string} numericString\r\n * @param {string} negativeSignCharacter The single character that represent the negative sign\r\n * @returns {boolean}\r\n */\r\n static isNegativeStrict(numericString, negativeSignCharacter = '-') {\r\n return numericString.charAt(0) === negativeSignCharacter;\r\n }\r\n\r\n /**\r\n * Return `true` if the very first character is the opening bracket, and if the rest of the `valueString` also has the closing bracket.\r\n *\r\n * @param {string} valueString\r\n * @param {string} leftBracket\r\n * @param {string} rightBracket\r\n * @returns {boolean}\r\n */\r\n static isNegativeWithBrackets(valueString, leftBracket, rightBracket) {\r\n return valueString.charAt(0) === leftBracket && this.contains(valueString, rightBracket);\r\n }\r\n\r\n /**\r\n * Return `true` if the formatted or unformatted numeric string represent the value 0 (ie. '0,00 €'), or is empty (' €').\r\n * This works since we test if there are any numbers from 1 to 9 in the string. If there is none, then the number is zero (or the string is empty).\r\n *\r\n * @param {string} numericString\r\n * @returns {boolean}\r\n */\r\n static isZeroOrHasNoValue(numericString) {\r\n return !(/[1-9]/g).test(numericString);\r\n }\r\n\r\n /**\r\n * Return the negative version of the value (represented as a string) given as a parameter.\r\n * The numeric string is a valid Javascript number when typecast to a `Number`.\r\n *\r\n * @param {string} value\r\n * @returns {*}\r\n */\r\n static setRawNegativeSign(value) {\r\n if (!this.isNegativeStrict(value, '-')) {\r\n return `-${value}`;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Replace the character at the position `index` in the string `string` by the character(s) `newCharacter`.\r\n *\r\n * @param {string} string\r\n * @param {int} index\r\n * @param {string} newCharacter\r\n * @returns {string}\r\n */\r\n static replaceCharAt(string, index, newCharacter) {\r\n return `${string.substr(0, index)}${newCharacter}${string.substr(index + newCharacter.length)}`;\r\n }\r\n\r\n /**\r\n * Return the value clamped to the nearest minimum/maximum value, as defined in the settings.\r\n *\r\n * @param {string|number} value\r\n * @param {object} settings\r\n * @returns {number}\r\n */\r\n static clampToRangeLimits(value, settings) {\r\n //XXX This function always assume `settings.minimumValue` is lower than `settings.maximumValue`\r\n return Math.max(settings.minimumValue, Math.min(settings.maximumValue, value));\r\n }\r\n\r\n /**\r\n * Return the number of number or dot characters on the left side of the caret, in a formatted number.\r\n *\r\n * @param {string} formattedNumberString\r\n * @param {int} caretPosition This must be a positive integer\r\n * @param {string} decimalCharacter\r\n * @returns {number}\r\n */\r\n static countNumberCharactersOnTheCaretLeftSide(formattedNumberString, caretPosition, decimalCharacter) {\r\n // Here we count the dot and report it as a number character too, since it will 'stay' in the Javascript number when unformatted\r\n const numberDotOrNegativeSign = new RegExp(`[0-9${decimalCharacter}-]`); // No need to escape the decimal character here, since it's in `[]`\r\n\r\n let numberDotAndNegativeSignCount = 0;\r\n for (let i = 0; i < caretPosition; i++) {\r\n // Test if the character is a number, a dot or an hyphen. If it is, count it, otherwise ignore it\r\n if (numberDotOrNegativeSign.test(formattedNumberString[i])) {\r\n numberDotAndNegativeSignCount++;\r\n }\r\n }\r\n\r\n return numberDotAndNegativeSignCount;\r\n }\r\n\r\n /**\r\n * Walk the `formattedNumberString` from left to right, one char by one, counting the `formattedNumberStringIndex`.\r\n * If the char is in the `rawNumberString` (starting at index 0), then `rawNumberStringIndex++`, and continue until\r\n * there is no more characters in `rawNumberString`) or that `rawNumberStringIndex === caretPositionInRawValue`.\r\n * When you stop, the `formattedNumberStringIndex` is the position where the caret should be set.\r\n *\r\n * @example\r\n * 1234567|89.01 : position 7 (rawNumberString)\r\n * 123.456.7|89,01 : position 9 (formattedNumberString)\r\n *\r\n * @param {string} rawNumberString\r\n * @param {int} caretPositionInRawValue\r\n * @param {string} formattedNumberString\r\n * @param {string} decimalCharacter\r\n * @returns {*}\r\n */\r\n static findCaretPositionInFormattedNumber(rawNumberString, caretPositionInRawValue, formattedNumberString, decimalCharacter) {\r\n const formattedNumberStringSize = formattedNumberString.length;\r\n const rawNumberStringSize = rawNumberString.length;\r\n\r\n let formattedNumberStringIndex;\r\n let rawNumberStringIndex = 0;\r\n for (formattedNumberStringIndex = 0;\r\n formattedNumberStringIndex < formattedNumberStringSize &&\r\n rawNumberStringIndex < rawNumberStringSize &&\r\n rawNumberStringIndex < caretPositionInRawValue;\r\n formattedNumberStringIndex++) {\r\n if (rawNumberString[rawNumberStringIndex] === formattedNumberString[formattedNumberStringIndex] ||\r\n (rawNumberString[rawNumberStringIndex] === '.' && formattedNumberString[formattedNumberStringIndex] === decimalCharacter)) {\r\n rawNumberStringIndex++;\r\n }\r\n }\r\n\r\n return formattedNumberStringIndex;\r\n }\r\n\r\n /**\r\n * Count the number of occurrence of the given character, in the given text.\r\n *\r\n * @param {string} character\r\n * @param {string} text\r\n * @returns {number}\r\n */\r\n static countCharInText(character, text) {\r\n let charCounter = 0;\r\n for (let i = 0; i < text.length; i++) {\r\n if (text[i] === character) {\r\n charCounter++;\r\n }\r\n }\r\n\r\n return charCounter;\r\n }\r\n\r\n /**\r\n * Return the index that can be used to set the caret position.\r\n * This takes into account that the position is starting at '0', not 1.\r\n *\r\n * @param {int} characterCount\r\n * @returns {number}\r\n */\r\n static convertCharacterCountToIndexPosition(characterCount) {\r\n return Math.max(characterCount, characterCount - 1);\r\n }\r\n\r\n /**\r\n * Cross browser routine for getting selected range/cursor position.\r\n * Note: this also works with edge cases like contenteditable-enabled elements, and hidden inputs.\r\n *\r\n * @param {HTMLInputElement|EventTarget} element\r\n * @returns {{}}\r\n */\r\n static getElementSelection(element) {\r\n const position = {};\r\n\r\n let isSelectionStartUndefined;\r\n try {\r\n isSelectionStartUndefined = this.isUndefined(element.selectionStart);\r\n } catch (error) {\r\n isSelectionStartUndefined = false;\r\n }\r\n\r\n try {\r\n if (isSelectionStartUndefined) {\r\n const selection = window.getSelection();\r\n const selectionInfo = selection.getRangeAt(0);\r\n position.start = selectionInfo.startOffset;\r\n position.end = selectionInfo.endOffset;\r\n position.length = position.end - position.start;\r\n } else {\r\n position.start = element.selectionStart;\r\n position.end = element.selectionEnd;\r\n position.length = position.end - position.start;\r\n }\r\n } catch (error) {\r\n // Manages the cases where :\r\n // - the 'contenteditable' elements that have no selections\r\n // - the <input> element is of type 'hidden'\r\n position.start = 0;\r\n position.end = 0;\r\n position.length = 0;\r\n }\r\n\r\n return position;\r\n }\r\n\r\n /**\r\n * Cross browser routine for setting selected range/cursor position\r\n *\r\n * @param {HTMLInputElement|EventTarget} element\r\n * @param {int} start\r\n * @param {int|null} end\r\n */\r\n static setElementSelection(element, start, end = null) {\r\n if (this.isUndefinedOrNullOrEmpty(end)) {\r\n end = start;\r\n }\r\n\r\n if (this.isInputElement(element)) {\r\n element.setSelectionRange(start, end);\r\n } else if (!AutoNumericHelper.isNull(element.firstChild)) {\r\n const range = document.createRange();\r\n range.setStart(element.firstChild, start);\r\n range.setEnd(element.firstChild, end);\r\n const selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n }\r\n\r\n /**\r\n * Function that throw error messages\r\n *\r\n * @param {string} message\r\n * @throws\r\n */\r\n static throwError(message) {\r\n throw new Error(message);\r\n }\r\n\r\n /**\r\n * Function that display a warning messages, according to the debug level.\r\n *\r\n * @param {string} message\r\n * @param {boolean} showWarning If FALSE, then the warning message is not displayed\r\n */\r\n static warning(message, showWarning = true) {\r\n if (showWarning) {\r\n /* eslint no-console: 0 */\r\n console.warn(`Warning: ${message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the given event is an instance of WheelEvent\r\n *\r\n * @static\r\n * @param {event} event The event to test\r\n * @returns {boolean} Return `true` if the event is an instance of WheelEvent, FALSE otherwise\r\n */\r\n static isWheelEvent(event) {\r\n return event instanceof WheelEvent;\r\n }\r\n\r\n /**\r\n * Return `true` if the given event is a wheelup event\r\n *\r\n * @param {WheelEvent} wheelEvent\r\n * @returns {boolean}\r\n */\r\n static isWheelUpEvent(wheelEvent) {\r\n if (!this.isWheelEvent(wheelEvent) || this.isUndefinedOrNullOrEmpty(wheelEvent.deltaY)) {\r\n this.throwError(`The event passed as a parameter is not a valid wheel event, '${wheelEvent.type}' given.`);\r\n }\r\n\r\n return wheelEvent.deltaY < 0;\r\n }\r\n\r\n /**\r\n * Return `true` if the given event is a wheeldown event\r\n *\r\n * @param {WheelEvent} wheelEvent\r\n * @returns {boolean}\r\n */\r\n static isWheelDownEvent(wheelEvent) {\r\n if (!this.isWheelEvent(wheelEvent) || this.isUndefinedOrNullOrEmpty(wheelEvent.deltaY)) {\r\n this.throwError(`The event passed as a parameter is not a valid wheel event, '${wheelEvent.type}' given.`);\r\n }\r\n\r\n return wheelEvent.deltaY > 0;\r\n }\r\n\r\n /**\r\n * Return the given raw value truncated at the given number of decimal places `decimalPlaces`.\r\n * This function does not round the value.\r\n *\r\n * @example\r\n * forceDecimalPlaces(123.45678, 0) -> '123.45678'\r\n * forceDecimalPlaces(123.45678, 1) -> '123.4'\r\n * forceDecimalPlaces(123.45678, 2) -> '123.45'\r\n * forceDecimalPlaces(123.45678, 3) -> '123.456'\r\n *\r\n * @param {number} value\r\n * @param {int} decimalPlaces\r\n * @returns {number|string}\r\n */\r\n static forceDecimalPlaces(value, decimalPlaces) {\r\n // We could make sure `decimalPlaces` is an integer and positive, but we'll leave that to the dev calling this function.\r\n const [integerPart, decimalPart] = String(value).split('.');\r\n if (!decimalPart) {\r\n return value;\r\n }\r\n\r\n return `${integerPart}.${decimalPart.substr(0, decimalPlaces)}`;\r\n }\r\n\r\n /**\r\n * Return the 'nearest rounded' value, according to the given step size.\r\n * @example roundToNearest(264789, 10000)) => 260000\r\n *\r\n * @param {number} value\r\n * @param {number} stepPlace\r\n * @returns {*}\r\n */\r\n static roundToNearest(value, stepPlace = 1000) {\r\n if (0 === value) {\r\n return 0;\r\n }\r\n\r\n if (stepPlace === 0) {\r\n this.throwError('The `stepPlace` used to round is equal to `0`. This value must not be equal to zero.');\r\n }\r\n\r\n return Math.round(value / stepPlace) * stepPlace;\r\n }\r\n\r\n /**\r\n * Return the 'nearest rounded' value by automatically adding or subtracting the calculated offset to the initial value.\r\n * This is done without having to pass a step to this function, and based on the size of the given `value`.\r\n *\r\n * @example Calculated offset\r\n * 1 -> 1 (1)\r\n * 14 -> 10 (10)\r\n * 143 -> 140 (10)\r\n * 1.278 -> 1.300 (100)\r\n * 28.456 -> 28.500 (100)\r\n * 276.345 -> 276.000 (1.000)\r\n * 4.534.061 -> 4.530.000 (10.000)\r\n * 66.723.844 -> 66.700.000 (100.000)\r\n * 257.833.411 -> 258.000.000 (1.000.000)\r\n *\r\n * Initial Added Offset\r\n * 2 decimalPlacesRawValue : 1.12 -> 2.00 (1)\r\n * 3 decimalPlacesRawValue : 1.123 -> 2.000 (1)\r\n *\r\n * Special case when the `value` to round is between -1 and 1, excluded :\r\n * @example\r\n * Number of Initial Result Calculated\r\n * decimal places value (add) offset\r\n * 2 decimalPlacesRawValue : 0.12 -> 0.13 (0.01) : Math.pow(10, -2)\r\n * 2 decimalPlacesRawValue : 0.01 -> 0.02 (0.01)\r\n * 2 decimalPlacesRawValue : 0.00 -> 0.01 (0.01)\r\n *\r\n * 3 decimalPlacesRawValue : 0.123 -> 0.133 (0.01) : Math.pow(10, -2)\r\n * 3 decimalPlacesRawValue : 0.012 -> 0.013 (0.001) : Math.pow(10, -3)\r\n * 3 decimalPlacesRawValue : 0.001 -> 0.001 (0.001)\r\n * 3 decimalPlacesRawValue : 0.000 -> 0.001 (0.001)\r\n *\r\n * 4 decimalPlacesRawValue : 0.4123 -> 0.4200 (0.01) : Math.pow(10, -2)\r\n * 4 decimalPlacesRawValue : 0.0412 -> 0.0420 (0.001) : Math.pow(10, -3)\r\n * 4 decimalPlacesRawValue : 0.0041 -> 0.0042 (0.0001) : Math.pow(10, -4)\r\n * 4 decimalPlacesRawValue : 0.0004 -> 0.0005 (0.0001)\r\n * 4 decimalPlacesRawValue : 0.0000 -> 0.0001 (0.0001)\r\n *\r\n * @param {number} value\r\n * @param {boolean} isAddition\r\n * @param {int} decimalPlacesRawValue The precision needed by the `rawValue`\r\n * @returns {*}\r\n */\r\n static modifyAndRoundToNearestAuto(value, isAddition, decimalPlacesRawValue) {\r\n value = Number(this.forceDecimalPlaces(value, decimalPlacesRawValue)); // Make sure that '0.13000000001' is converted to the number of rawValue decimal places '0.13'\r\n\r\n const absValue = Math.abs(value);\r\n if (absValue >= 0 && absValue < 1) {\r\n const rawValueMinimumOffset = Math.pow(10, -decimalPlacesRawValue);\r\n if (value === 0) {\r\n // 4 decimalPlacesRawValue : 0.0000 -> 0.0001 (0.0001)\r\n return (isAddition)?rawValueMinimumOffset:-rawValueMinimumOffset;\r\n }\r\n\r\n let offset;\r\n const minimumOffsetFirstDecimalPlaceIndex = decimalPlacesRawValue;\r\n // Find where is the first non-zero decimal places\r\n const indexFirstNonZeroDecimalPlace = this.indexFirstNonZeroDecimalPlace(value);\r\n if (indexFirstNonZeroDecimalPlace >= minimumOffsetFirstDecimalPlaceIndex - 1) {\r\n /* 4 decimalPlacesRawValue : 0.0041 -> 0.0042 (0.0001) : Math.pow(10, -4)\r\n * 4 decimalPlacesRawValue : 0.0004 -> 0.0005 (0.0001)\r\n */\r\n offset = rawValueMinimumOffset;\r\n } else {\r\n offset = Math.pow(10, -(indexFirstNonZeroDecimalPlace + 1));\r\n }\r\n\r\n let result;\r\n if (isAddition) {\r\n result = value + offset;\r\n } else {\r\n result = value - offset;\r\n }\r\n\r\n return this.roundToNearest(result, offset);\r\n } else {\r\n // For values >= 1\r\n value = parseInt(value, 10);\r\n const lengthValue = Math.abs(value).toString().length; // `Math.abs()` is needed here to omit the negative sign '-' in case of a negative value\r\n\r\n let pow;\r\n switch (lengthValue) {\r\n // Special cases for small numbers\r\n case 1:\r\n pow = 0;\r\n break;\r\n case 2:\r\n case 3:\r\n pow = 1;\r\n break;\r\n case 4:\r\n case 5:\r\n pow = 2;\r\n break;\r\n // Default behavior\r\n default:\r\n pow = lengthValue - 3;\r\n }\r\n const offset = Math.pow(10, pow);\r\n\r\n let result;\r\n if (isAddition) {\r\n result = value + offset;\r\n } else {\r\n result = value - offset;\r\n }\r\n\r\n if (result <= 10 && result >= -10) {\r\n return result;\r\n }\r\n\r\n return this.roundToNearest(result, offset);\r\n }\r\n }\r\n\r\n /**\r\n * Return the 'nearest rounded' value automatically by adding the calculated offset to the initial value.\r\n * This will limit the result to the given number of decimal places `decimalPlacesLimit`.\r\n *\r\n * @param {number} value\r\n * @param {int} decimalPlacesLimit\r\n * @returns {*}\r\n */\r\n static addAndRoundToNearestAuto(value, decimalPlacesLimit) {\r\n return this.modifyAndRoundToNearestAuto(value, true, decimalPlacesLimit);\r\n }\r\n\r\n /**\r\n * Return the 'nearest rounded' value automatically by subtracting the calculated offset to the initial value.\r\n * This will limit the result to the given number of decimal places `decimalPlacesLimit`.\r\n *\r\n * @param {number} value\r\n * @param {int} decimalPlacesLimit\r\n * @returns {*}\r\n */\r\n static subtractAndRoundToNearestAuto(value, decimalPlacesLimit) {\r\n return this.modifyAndRoundToNearestAuto(value, false, decimalPlacesLimit);\r\n }\r\n\r\n /**\r\n * Take an arabic number as a string and return a javascript number.\r\n * By default, this function does not try to convert the arabic decimal and thousand separator characters.\r\n * This returns `NaN` is the conversion is not possible.\r\n * Based on http://stackoverflow.com/a/17025392/2834898\r\n *\r\n * @param {string} arabicNumbers\r\n * @param {boolean} returnANumber If `true`, return a Number, otherwise return a String\r\n * @param {boolean} parseDecimalCharacter\r\n * @param {boolean} parseThousandSeparator\r\n * @returns {string|number|NaN}\r\n */\r\n static arabicToLatinNumbers(arabicNumbers, returnANumber = true, parseDecimalCharacter = false, parseThousandSeparator = false) {\r\n if (this.isNull(arabicNumbers)) {\r\n return arabicNumbers;\r\n }\r\n\r\n let result = arabicNumbers.toString();\r\n if (result === '') {\r\n return arabicNumbers;\r\n }\r\n\r\n if (result.match(/[٠١٢٣٤٥٦٧٨٩۴۵۶]/g) === null) {\r\n // If no Arabic/Persian numbers are found, return the numeric string or number directly\r\n if (returnANumber) {\r\n result = Number(result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n if (parseDecimalCharacter) {\r\n result = result.replace(/Ù«/, '.'); // Decimal character\r\n }\r\n\r\n if (parseThousandSeparator) {\r\n result = result.replace(/Ù¬/g, ''); // Thousand separator\r\n }\r\n\r\n // Replace the numbers only\r\n result = result.replace(/[٠١٢٣٤٥٦٧٨٩]/g, d => d.charCodeAt(0) - 1632) // Arabic numbers\r\n .replace(/[Û°Û±Û²Û³Û´ÛµÛ¶Û·Û¸Û¹]/g, d => d.charCodeAt(0) - 1776); // Persian numbers\r\n\r\n // `NaN` has precedence over the string `'NaN'`\r\n const resultAsNumber = Number(result);\r\n if (isNaN(resultAsNumber)) {\r\n return resultAsNumber;\r\n }\r\n\r\n if (returnANumber) {\r\n result = resultAsNumber;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Create a custom event and immediately sent it from the given element.\r\n * By default, if no element is given, the event is thrown from `document`.\r\n *\r\n * @param {string} eventName\r\n * @param {HTMLElement|HTMLDocument|EventTarget} element\r\n * @param {object} detail\r\n * @param {boolean} bubbles Set to `true` if the event must bubble up\r\n * @param {boolean} cancelable Set to `true` if the event must be cancelable\r\n */\r\n static triggerEvent(eventName, element = document, detail = null, bubbles = true, cancelable = true) {\r\n let event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, { detail, bubbles , cancelable }); // This is not supported by default by IE ; We use the polyfill for IE9 and later.\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, bubbles, cancelable, { detail });\r\n }\r\n\r\n element.dispatchEvent(event);\r\n }\r\n\r\n /**\r\n * Function to parse minimumValue, maximumValue & the input value to prepare for testing to determine if the value falls within the min / max range.\r\n * Return an object example: minimumValue: \"999999999999999.99\" returns the following \"{s: -1, e: 12, c: Array[15]}\".\r\n *\r\n * This function is adapted from Big.js https://github.com/MikeMcl/big.js/. Many thanks to Mike.\r\n *\r\n * @param {number|string} n A numeric value.\r\n * @returns {{}}\r\n */\r\n static parseStr(n) {\r\n const x = {}; // A Big number instance.\r\n let e;\r\n let i;\r\n let nL;\r\n let j;\r\n\r\n // Minus zero?\r\n if (n === 0 && 1 / n < 0) {\r\n n = '-0';\r\n }\r\n\r\n // Determine sign. 1 positive, -1 negative\r\n n = n.toString();\r\n if (this.isNegativeStrict(n, '-')) {\r\n n = n.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Decimal point?\r\n e = n.indexOf('.');\r\n if (e > -1) {\r\n n = n.replace('.', '');\r\n }\r\n\r\n // Length of string if no decimal character\r\n if (e < 0) {\r\n // Integer\r\n e = n.length;\r\n }\r\n\r\n // Determine leading zeros\r\n i = (n.search(/[1-9]/i) === -1) ? n.length : n.search(/[1-9]/i);\r\n nL = n.length;\r\n if (i === nL) {\r\n // Zero\r\n x.e = 0;\r\n x.c = [0];\r\n } else {\r\n // Determine trailing zeros\r\n for (j = nL - 1; n.charAt(j) === '0'; j -= 1) {\r\n nL -= 1;\r\n }\r\n nL -= 1;\r\n\r\n // Decimal location\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros\r\n for (e = 0; i <= nL; i += 1) {\r\n x.c[e] = +n.charAt(i);\r\n e += 1;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n /**\r\n * Function to test if the input value falls with the Min / Max settings.\r\n * This uses the parsed strings for the above parseStr function.\r\n *\r\n * This function is adapted from Big.js https://github.com/MikeMcl/big.js/. Many thanks to Mike.\r\n *\r\n * @param {object} y Big number instance\r\n * @param {object} x Big number instance\r\n * @returns {*}\r\n */\r\n static testMinMax(y, x) {\r\n const xc = x.c;\r\n const yc = y.c;\r\n let i = x.s;\r\n let j = y.s;\r\n let k = x.e;\r\n let l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n let result;\r\n if (!xc[0]) {\r\n result = !yc[0]?0:-j;\r\n } else {\r\n result = i;\r\n }\r\n return result;\r\n }\r\n\r\n // Signs differ?\r\n if (i !== j) {\r\n return i;\r\n }\r\n const xNeg = i < 0;\r\n\r\n // Compare exponents\r\n if (k !== l) {\r\n return (k > l ^ xNeg)?1:-1;\r\n }\r\n i = -1;\r\n k = xc.length;\r\n l = yc.length;\r\n j = (k < l) ? k : l;\r\n\r\n // Compare digit by digit\r\n for (i += 1; i < j; i += 1) {\r\n if (xc[i] !== yc[i]) {\r\n return (xc[i] > yc[i] ^ xNeg)?1:-1;\r\n }\r\n }\r\n\r\n // Compare lengths\r\n let result;\r\n if (k === l) {\r\n result = 0;\r\n } else {\r\n result = (k > l ^ xNeg)?1:-1;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Generate a random string.\r\n * cf. http://stackoverflow.com/a/8084248/2834898\r\n *\r\n * @param {Number} strLength Length of the generated string (in character count)\r\n * @returns {string}\r\n */\r\n static randomString(strLength = 5) {\r\n return Math.random()\r\n .toString(36)\r\n .substr(2, strLength);\r\n }\r\n\r\n /**\r\n * Return the DOM element when passed either a DOM element or a selector string.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @returns {HTMLElement}\r\n */\r\n static domElement(domElementOrSelector) {\r\n let domElement;\r\n if (AutoNumericHelper.isString(domElementOrSelector)) {\r\n domElement = document.querySelector(domElementOrSelector);\r\n } else {\r\n domElement = domElementOrSelector;\r\n }\r\n\r\n return domElement;\r\n }\r\n\r\n /**\r\n * Retrieve the current element value.\r\n *\r\n * @param {HTMLElement|HTMLInputElement|EventTarget} element\r\n * @returns {number|string|null}\r\n */\r\n static getElementValue(element) {\r\n if (element.tagName.toLowerCase() === 'input') {\r\n return element.value;\r\n }\r\n\r\n return this.text(element);\r\n }\r\n\r\n /**\r\n * Modify the element value directly.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} element\r\n * @param {number|string|null} value\r\n */\r\n static setElementValue(element, value = null) {\r\n if (element.tagName.toLowerCase() === 'input') {\r\n element.value = value;\r\n } else {\r\n element.textContent = value;\r\n }\r\n }\r\n\r\n /**\r\n * Set the invalid state for the given element.\r\n * A custom message can be passed as the second argument.\r\n * Note: This does not work with contenteditable elements\r\n *\r\n * @param {HTMLElement|HTMLInputElement} element\r\n * @param {string|null} message\r\n * @throws Error\r\n */\r\n static setInvalidState(element, message = 'Invalid') {\r\n if (message === '' || this.isNull(message)) this.throwError('Cannot set the invalid state with an empty message.');\r\n\r\n element.setCustomValidity(message);\r\n }\r\n\r\n /**\r\n * Set the valid state for the given element.\r\n * Note: This does not work with contenteditable elements\r\n *\r\n * @param {HTMLElement|HTMLInputElement} element\r\n */\r\n static setValidState(element) {\r\n element.setCustomValidity('');\r\n }\r\n\r\n /**\r\n * This clone the given object, and return it.\r\n * WARNING: This does not do a deep cloning.\r\n * cf. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Examples\r\n * //TODO Add a `deep` option to clone object with more than one depth\r\n *\r\n * @param {object} obj\r\n * @returns {object}\r\n */\r\n static cloneObject(obj) {\r\n return Object.assign({}, obj);\r\n }\r\n\r\n /**\r\n * Return a 'camelized' version of the given string.\r\n * By default, this assume that :\r\n * - the separators are hyphens '-',\r\n * - the 'data-' string should be removed, and\r\n * - that the very first word should not be capitalized.\r\n *\r\n * @example camelize('data-currency-symbol') => 'currencySymbol'\r\n *\r\n * @param {string} str Text to camelize\r\n * @param {string} separator Character that separate each word\r\n * @param {boolean} removeData If set to `true`, remove the `data-` part that you can find on some html attributes\r\n * @param {boolean} skipFirstWord If set to `true`, do not capitalize the very first word\r\n * @returns {string|null}\r\n */\r\n static camelize(str, separator = '-', removeData = true, skipFirstWord = true) {\r\n if (this.isNull(str)) {\r\n return null;\r\n }\r\n\r\n if (removeData) {\r\n str = str.replace(/^data-/, '');\r\n }\r\n\r\n // Cut the string into words\r\n const words = str.split(separator);\r\n\r\n // Capitalize each word\r\n let result = words.map(word => `${word.charAt(0).toUpperCase()}${word.slice(1)}`);\r\n\r\n // Then concatenate them back\r\n result = result.join('');\r\n\r\n if (skipFirstWord) {\r\n // Skip the very first letter\r\n result = `${result.charAt(0).toLowerCase()}${result.slice(1)}`;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the text component of the given DOM element.\r\n *\r\n * @param {Element} domElement\r\n * @returns {string}\r\n */\r\n static text(domElement) {\r\n const nodeType = domElement.nodeType;\r\n\r\n let result;\r\n // cf. https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\r\n if (nodeType === Node.ELEMENT_NODE ||\r\n nodeType === Node.DOCUMENT_NODE ||\r\n nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n result = domElement.textContent;\r\n } else if (nodeType === Node.TEXT_NODE) {\r\n result = domElement.nodeValue;\r\n } else {\r\n result = '';\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Set the text content of the given DOM element.\r\n * @param {Element} domElement\r\n * @param {string} text\r\n */\r\n static setText(domElement, text) {\r\n const nodeType = domElement.nodeType;\r\n if (nodeType === Node.ELEMENT_NODE ||\r\n nodeType === Node.DOCUMENT_NODE ||\r\n nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n domElement.textContent = text;\r\n }\r\n //TODO Display a warning if that function does not do anything?\r\n }\r\n\r\n /**\r\n * Filter out the given `arr` array with the elements found in `excludedElements`.\r\n * This returns a new array and does not modify the source.\r\n * cf. verification here : http://codepen.io/AnotherLinuxUser/pen/XpvrMg?editors=0012\r\n *\r\n * @param {Array} arr\r\n * @param {Array} excludedElements\r\n * @returns {*|Array.<T>}\r\n */\r\n static filterOut(arr, excludedElements) {\r\n return arr.filter(element => !this.isInArray(element, excludedElements));\r\n }\r\n\r\n /**\r\n * Remove the trailing zeros in the decimal part of a number.\r\n *\r\n * @param {string} numericString\r\n * @returns {*}\r\n */\r\n static trimPaddedZerosFromDecimalPlaces(numericString) {\r\n numericString = String(numericString);\r\n if (numericString === '') {\r\n return '';\r\n }\r\n\r\n const [integerPart, decimalPart] = numericString.split('.');\r\n if (this.isUndefinedOrNullOrEmpty(decimalPart)) {\r\n return integerPart;\r\n }\r\n\r\n const trimmedDecimalPart = decimalPart.replace(/0+$/g, '');\r\n\r\n let result;\r\n if (trimmedDecimalPart === '') {\r\n result = integerPart;\r\n } else {\r\n result = `${integerPart}.${trimmedDecimalPart}`;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the top-most hovered item by the mouse cursor.\r\n *\r\n * @returns {*}\r\n */\r\n static getHoveredElement() {\r\n const hoveredElements = [...document.querySelectorAll(':hover')];\r\n return hoveredElements[hoveredElements.length - 1];\r\n }\r\n\r\n /**\r\n * Return the given array trimmed to the given length.\r\n * @example arrayTrim([1, 2, 3, 4], 2) -> [1, 2]\r\n *\r\n * @param {Array} array\r\n * @param {Number} length\r\n * @returns {*}\r\n */\r\n static arrayTrim(array, length) {\r\n const arrLength = array.length;\r\n if (arrLength === 0 || length > arrLength) {\r\n // Also manage the case where `length` is higher than the current length\r\n return array;\r\n }\r\n\r\n if (length < 0) {\r\n return [];\r\n }\r\n\r\n array.length = parseInt(length, 10);\r\n\r\n return array;\r\n }\r\n\r\n /**\r\n * Merge all the given arrays by keeping only unique elements, and return an array with de-duplicated values.\r\n * cf. http://stackoverflow.com/a/27664971/2834898\r\n *\r\n * @param {...array} arrays\r\n * @returns {[*]}\r\n */\r\n static arrayUnique(...arrays) { //FIXME à tester\r\n return [...new Set([].concat(...arrays))];\r\n }\r\n\r\n /**\r\n * Merge all the given Maps by keeping only unique elements, and return a new Map with de-duplicated keys.\r\n *\r\n * @param {...Map} mapObjects\r\n * @returns {Map}\r\n */\r\n static mergeMaps(...mapObjects) {\r\n return new Map(mapObjects.reduce((as, b) => as.concat([...b]), []));\r\n }\r\n\r\n /**\r\n * Search the given `value` in the object `obj`, and return the very first key it finds\r\n *\r\n * @param {object} obj\r\n * @param {string|number} value\r\n * @returns {*|null}\r\n */\r\n static objectKeyLookup(obj, value) {\r\n const result = Object.entries(obj).find(array => array[1] === value);\r\n let key = null;\r\n if (result !== void(0)) {\r\n key = result[0];\r\n }\r\n\r\n return key;\r\n }\r\n\r\n /**\r\n * Insert the single character `char` in the string `str` at the given position `index`\r\n *\r\n * @param {string} str\r\n * @param {string} char\r\n * @param {int} index\r\n * @returns {string}\r\n */\r\n static insertAt(str, char, index) {\r\n str = String(str);\r\n\r\n if (index > str.length) {\r\n throw new Error(`The given index is out of the string range.`);\r\n }\r\n\r\n if (char.length !== 1) {\r\n throw new Error('The given string `char` should be only one character long.');\r\n }\r\n\r\n if (str === '' && index === 0) {\r\n return char;\r\n }\r\n\r\n return `${str.slice(0, index)}${char}${str.slice(index)}`;\r\n }\r\n\r\n /**\r\n * Convert the given scientific notation to the 'expanded' decimal notation\r\n *\r\n * @example scientificToDecimal('-123.4567e-6') returns '-0.0001234567'\r\n *\r\n * @param {number|string} val\r\n * @returns {number|string}\r\n */\r\n static scientificToDecimal(val) {\r\n // Check that the val is a Number\r\n const numericValue = Number(val);\r\n if (isNaN(numericValue)) {\r\n return NaN;\r\n }\r\n\r\n // Check if the number is in a scientific notation\r\n val = String(val);\r\n const isScientific = this.contains(val, 'e') || this.contains(val, 'E');\r\n\r\n if (!isScientific) {\r\n return val;\r\n }\r\n\r\n // Convert the scientific notation to a numeric string\r\n let [value, exponent] = val.split(/e/i);\r\n const isNegative = value < 0;\r\n if (isNegative) {\r\n value = value.replace('-', '');\r\n }\r\n\r\n const isNegativeExponent = +exponent < 0;\r\n if (isNegativeExponent) {\r\n exponent = exponent.replace('-', ''); // Remove the negative sign\r\n }\r\n\r\n const [int, float] = value.split(/\\./);\r\n\r\n let result;\r\n if (isNegativeExponent) {\r\n if (int.length > exponent) {\r\n // Place the decimal point at the int length count minus exponent\r\n result = this.insertAt(int, '.', int.length - exponent);\r\n } else {\r\n // If that decimal point is greater than the int length, pad with zeros (ie. Number('-123.4567e-6') --> -0.0001234567)\r\n result = `0.${'0'.repeat(exponent - int.length)}${int}`;\r\n }\r\n\r\n result = `${result}${float?float:''}`;\r\n } else { // Positive exponent\r\n if (float) {\r\n value = `${int}${float}`; // Remove the '.', if any\r\n if (exponent < float.length) {\r\n result = this.insertAt(value, '.', +exponent + int.length);\r\n } else {\r\n result = `${value}${'0'.repeat(exponent - float.length)}`;\r\n }\r\n } else {\r\n value = value.replace('.', ''); // Single case where val is '1.e4'\r\n result = `${value}${'0'.repeat(Number(exponent))}`;\r\n }\r\n }\r\n\r\n if (isNegative) {\r\n // Put back the negative sign, if any\r\n result = `-${result}`;\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","/**\r\n * Math expression tokenizer/parser/evaluator functions for autoNumeric.js\r\n *\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n/**\r\n * Recursively evaluate the abstract syntax tree (AST) and return the result for the given sub-tree\r\n */\r\nexport default class Evaluator {\r\n constructor(ast) {\r\n if (ast === null) {\r\n throw new Error(`Invalid AST`);\r\n }\r\n\r\n // return this.evaluate(ast);\r\n }\r\n\r\n evaluate(subtree) {\r\n if (subtree === void(0) || subtree === null) {\r\n throw new Error(`Invalid AST sub-tree`);\r\n }\r\n\r\n if (subtree.type === 'number') {\r\n return subtree.value;\r\n } else if (subtree.type === 'unaryMinus') {\r\n return -this.evaluate(subtree.left);\r\n } else {\r\n const left = this.evaluate(subtree.left);\r\n const right = this.evaluate(subtree.right);\r\n\r\n switch (subtree.type) {\r\n case 'op_+':\r\n return Number(left) + Number(right);\r\n case 'op_-':\r\n return left - right;\r\n case 'op_*':\r\n return left * right;\r\n case 'op_/':\r\n return left / right;\r\n default :\r\n throw new Error(`Invalid operator '${subtree.type}'`);\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * Math expression tokenizer/parser/evaluator functions for autoNumeric.js\r\n *\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n/**\r\n * The Abstract Syntax Tree node\r\n *\r\n * Each node carries the node information such as type (operator type), value (if it's a leaf), and the left and right branches\r\n */\r\nexport default class ASTNode {\r\n /*\r\n constructor() {\r\n // this.type = void(0);\r\n // this.value = 0;\r\n // this.left = null;\r\n // this.right = null;\r\n }\r\n */\r\n\r\n static createNode(type, left, right) {\r\n const node = new ASTNode();\r\n node.type = type;\r\n node.left = left;\r\n node.right = right;\r\n\r\n return node;\r\n }\r\n\r\n static createUnaryNode(left) {\r\n const node = new ASTNode();\r\n node.type = \"unaryMinus\";\r\n node.left = left;\r\n node.right = null;\r\n\r\n return node;\r\n }\r\n\r\n static createLeaf(value) {\r\n const node = new ASTNode();\r\n node.type = \"number\";\r\n node.value = value;\r\n\r\n return node;\r\n }\r\n}\r\n","/**\r\n * Math expression tokenizer/parser/evaluator functions for autoNumeric.js\r\n *\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n/**\r\n * Data structure used by the Lexer and Parser classes\r\n */\r\nexport default class Token {\r\n constructor(type, value, symbol) {\r\n this.type = type;\r\n this.value = value;\r\n this.symbol = symbol;\r\n }\r\n}\r\n","/**\r\n * Math expression tokenizer/parser/evaluator functions for autoNumeric.js\r\n *\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumericHelper from '../AutoNumericHelper';\r\nimport Token from './Token';\r\n\r\nexport default class Lexer {\r\n constructor(text) {\r\n this.text = text;\r\n this.textLength = text.length;\r\n this.index = 0;\r\n this.token = new Token('Error', 0, 0);\r\n }\r\n\r\n /**\r\n * Ignore white spaces and increment the index count until a non-space character is found\r\n * @private\r\n */\r\n _skipSpaces() {\r\n while (this.text[this.index] === ' ' && this.index <= this.textLength) {\r\n this.index++;\r\n }\r\n }\r\n\r\n /**\r\n * Return the current index\r\n *\r\n * @returns {number}\r\n */\r\n getIndex() {\r\n return this.index;\r\n }\r\n\r\n /**\r\n * Return the next token object\r\n *\r\n * @param {string} decimalCharacter The decimal character to use in the float numbers\r\n * @returns {Token}\r\n */\r\n getNextToken(decimalCharacter = '.') {\r\n this._skipSpaces();\r\n\r\n // Test for the end of text\r\n if (this.textLength === this.index) {\r\n this.token.type = 'EOT'; // End of text\r\n\r\n return this.token;\r\n }\r\n\r\n // If the current character is a digit read a number\r\n if (AutoNumericHelper.isDigit(this.text[this.index])) {\r\n this.token.type = 'num';\r\n this.token.value = this._getNumber(decimalCharacter);\r\n\r\n return this.token;\r\n }\r\n\r\n // Check if the current character is an operator or parentheses\r\n this.token.type = 'Error';\r\n switch (this.text[this.index]) {\r\n case '+': this.token.type = '+'; break;\r\n case '-': this.token.type = '-'; break;\r\n case '*': this.token.type = '*'; break;\r\n case '/': this.token.type = '/'; break;\r\n case '(': this.token.type = '('; break;\r\n case ')': this.token.type = ')'; break;\r\n }\r\n\r\n if (this.token.type !== 'Error') {\r\n this.token.symbol = this.text[this.index];\r\n this.index++;\r\n } else {\r\n throw new Error(`Unexpected token '${this.token.symbol}' at position '${this.token.index}' in the token function`);\r\n }\r\n\r\n return this.token;\r\n }\r\n\r\n /**\r\n * Return the integer or float number starting from the `this.index` string index\r\n *\r\n * @param {string} decimalCharacter The decimal character to use in the float numbers\r\n *\r\n * @returns {string}\r\n * @private\r\n */\r\n _getNumber(decimalCharacter) {\r\n this._skipSpaces();\r\n\r\n const startIndex = this.index;\r\n while (this.index <= this.textLength && AutoNumericHelper.isDigit(this.text[this.index])) { // Integer part\r\n this.index++;\r\n }\r\n\r\n if (this.text[this.index] === decimalCharacter) {\r\n this.index++;\r\n }\r\n\r\n while (this.index <= this.textLength && AutoNumericHelper.isDigit(this.text[this.index])) { // Decimal part, if any\r\n this.index++;\r\n }\r\n\r\n if (this.index === startIndex) {\r\n throw new Error(`No number has been found while it was expected`);\r\n }\r\n\r\n // Convert the localized float number to a Javascript number\r\n return this.text.substring(startIndex, this.index).replace(decimalCharacter, '.');\r\n }\r\n}\r\n","/**\r\n * Math expression tokenizer/parser/evaluator functions for autoNumeric.js\r\n *\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport ASTNode from './ASTNode';\r\nimport Lexer from './Lexer';\r\n\r\n/**\r\n * Math expression parser using the shunting-yard algorithm\r\n *\r\n * This implements the following BNF grammar:\r\n * EXP -> TERM MORE_EXP\r\n * MORE_EXP -> + TERM MORE_EXP |\r\n * - TERM MORE_EXP |\r\n * epsilon\r\n * TERM -> FACTOR MORE_TERM\r\n * MORE_TERM -> * FACTOR MORE_TERM |\r\n * / FACTOR MORE_TERM |\r\n * epsilon\r\n * FACTOR -> number |\r\n * ( EXP ) |\r\n * - FACTOR\r\n */\r\nexport default class Parser {\r\n /**\r\n * Parse the given string, and generate an abstract syntax tree (AST) from the math expression\r\n *\r\n * @param {string} text\r\n * @param {string} customDecimalCharacter The custom decimal character to use in floats\r\n * @returns {ASTNode}\r\n */\r\n constructor(text, customDecimalCharacter = '.') {\r\n this.text = text;\r\n this.decimalCharacter = customDecimalCharacter;\r\n this.lexer = new Lexer(text);\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n\r\n return this._exp();\r\n }\r\n\r\n _exp() {\r\n const termNode = this._term();\r\n const exprNode = this._moreExp();\r\n\r\n //TODO Do not create an 'empty' node where this is added to 0\r\n return ASTNode.createNode('op_+', termNode, exprNode);\r\n }\r\n\r\n _moreExp() {\r\n let termNode;\r\n let exprNode;\r\n switch (this.token.type) {\r\n case '+':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n termNode = this._term();\r\n exprNode = this._moreExp();\r\n\r\n return ASTNode.createNode('op_+', exprNode, termNode);\r\n case '-':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n termNode = this._term();\r\n exprNode = this._moreExp();\r\n\r\n return ASTNode.createNode('op_-', exprNode, termNode);\r\n }\r\n\r\n return ASTNode.createLeaf(0);\r\n }\r\n\r\n _term() {\r\n const factorNode = this._factor();\r\n const termsNode = this._moreTerms();\r\n\r\n //TODO Do not create an 'empty' node where this is multiplied by 1\r\n return ASTNode.createNode('op_*', factorNode, termsNode);\r\n }\r\n\r\n _moreTerms() {\r\n let factorNode;\r\n let termsNode;\r\n switch (this.token.type) {\r\n case '*':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n factorNode = this._factor();\r\n termsNode = this._moreTerms();\r\n\r\n return ASTNode.createNode('op_*', termsNode, factorNode);\r\n case '/':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n factorNode = this._factor();\r\n termsNode = this._moreTerms();\r\n\r\n return ASTNode.createNode('op_/', termsNode, factorNode);\r\n }\r\n\r\n return ASTNode.createLeaf(1);\r\n }\r\n\r\n _factor() {\r\n let expression;\r\n let factor;\r\n let value;\r\n switch (this.token.type) {\r\n case 'num':\r\n value = this.token.value;\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n\r\n return ASTNode.createLeaf(value);\r\n case '-':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n factor = this._factor();\r\n\r\n return ASTNode.createUnaryNode(factor);\r\n case '(':\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n expression = this._exp();\r\n this._match(')');\r\n\r\n return expression;\r\n default: {\r\n throw new Error(`Unexpected token '${this.token.symbol}' with type '${this.token.type}' at position '${this.token.index}' in the factor function`);\r\n }\r\n }\r\n }\r\n\r\n _match(expected) {\r\n const index = this.lexer.getIndex() - 1;\r\n if (this.text[index] === expected) {\r\n this.token = this.lexer.getNextToken(this.decimalCharacter);\r\n } else {\r\n throw new Error(`Unexpected token '${this.token.symbol}' at position '${index}' in the match function`);\r\n }\r\n }\r\n}\r\n","/**\r\n * AutoNumeric.js\r\n *\r\n * @version 4.6.0\r\n * @date 2020-04-26 UTC 10:45\r\n *\r\n * @authors Bob Knothe, Alexandre Bonneau\r\n * @contributors Sokolov Yura and others, cf. AUTHORS\r\n * @copyright 2009 Robert J. Knothe\r\n * @since 2009-08-09\r\n *\r\n * @summary autoNumeric is a standalone Javascript library\r\n * that provides live *as-you-type* formatting for\r\n * international numbers and currencies.\r\n *\r\n * @link http://autonumeric.org\r\n *\r\n * Note : Some functions are borrowed from big.js\r\n * @see https://github.com/MikeMcl/big.js/\r\n *\r\n * Please report any bugs to https://github.com/autoNumeric/autoNumeric\r\n *\r\n * @license Released under the MIT License\r\n * @link http://www.opensource.org/licenses/mit-license.php\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\n//TODO Prevent having to enter relative path in the js files (ie. using `./AutoNumericHelper` instead of just `AutoNumericHelper`) (cf. http://moduscreate.com/es6-es2015-import-no-relative-path-webpack/)\r\nimport AutoNumericHelper from \"./AutoNumericHelper\";\r\nimport AutoNumericEnum from \"./AutoNumericEnum\";\r\nimport Evaluator from \"./maths/Evaluator\";\r\nimport Parser from \"./maths/Parser\";\r\n\r\n/**\r\n * Class declaration for the AutoNumeric object.\r\n *\r\n * An AutoNumeric element is an object wrapper that keeps a reference to the DOM element it manages (usually an <input> one), and provides autoNumeric-specific variables and functions.\r\n */\r\nexport default class AutoNumeric {\r\n /**\r\n * Initialize the AutoNumeric object onto the given DOM element, and attach the settings and related event listeners to it.\r\n * The options passed as a parameter is an object that contains the settings (ie. {digitGroupSeparator: \".\", decimalCharacter: \",\", currencySymbol: '€ '})\r\n *\r\n * @example\r\n * anElement = new AutoNumeric(domElement); // With the default options\r\n * anElement = new AutoNumeric(domElement, { options }); // With one option object\r\n * anElement = new AutoNumeric(domElement, 'euroPos'); // With a named pre-defined string\r\n * anElement = new AutoNumeric(domElement, [{ options1 }, 'euroPos', { options2 }]); // With multiple option objects (the latest option overwriting the previous ones)\r\n * anElement = new AutoNumeric(domElement, null, { options }); // With one option object, and a failed initial value\r\n * anElement = new AutoNumeric(domElement).french(); // With one pre-defined language object\r\n * anElement = new AutoNumeric(domElement).french({ options });// With one pre-defined language object and additional options that will override the defaults\r\n *\r\n * // ...or init and set the value in one call :\r\n * anElement = new AutoNumeric(domElement, 12345.789); // With the default options, and an initial value\r\n * anElement = new AutoNumeric(domElement, 12345.789, { options });\r\n * anElement = new AutoNumeric(domElement, '12345.789', { options });\r\n * anElement = new AutoNumeric(domElement, 12345.789, 'euroPos');\r\n * anElement = new AutoNumeric(domElement, 12345.789, [{ options1 }, 'euroPos', { options2 }]);\r\n * anElement = new AutoNumeric(domElement, 12345.789).french({ options });\r\n * anElement = new AutoNumeric(domElement, 12345.789, { options }).french({ options }); // Not really helpful, but possible\r\n *\r\n * // The AutoNumeric constructor class can also accept a string as a css selector. Under the hood this use `QuerySelector` and limit itself to only the first element it finds.\r\n * anElement = new AutoNumeric('.myCssClass > input');\r\n * anElement = new AutoNumeric('.myCssClass > input', { options });\r\n * anElement = new AutoNumeric('.myCssClass > input', 'euroPos');\r\n * anElement = new AutoNumeric('.myCssClass > input', [{ options1 }, 'euroPos', { options2 }]);\r\n * anElement = new AutoNumeric('.myCssClass > input', 12345.789);\r\n * anElement = new AutoNumeric('.myCssClass > input', 12345.789, { options });\r\n * anElement = new AutoNumeric('.myCssClass > input', 12345.789, 'euroPos');\r\n * anElement = new AutoNumeric('.myCssClass > input', 12345.789, [{ options1 }, 'euroPos', { options2 }]);\r\n * anElement = new AutoNumeric('.myCssClass > input', null, { options }); // With a failed initial value\r\n * anElement = new AutoNumeric('.myCssClass > input', 12345.789).french({ options });\r\n *\r\n * @param {object|Array|number|string} arg1\r\n * @param {object|Array|number|string|null} arg2\r\n * @param {object|Array|number|string|null} arg3\r\n * @throws\r\n */\r\n constructor(arg1 = null, arg2 = null, arg3 = null) {\r\n // --------------------------------------------------------\r\n // -------------- Initialization\r\n // Initialize the arguments\r\n const { domElement, initialValue, userOptions } = AutoNumeric._setArgumentsValues(arg1, arg2, arg3);\r\n\r\n // Initialize the element\r\n this.domElement = domElement;\r\n\r\n // Generate the settings\r\n this.defaultRawValue = \"\"; // The default raw value to set when initializing an AutoNumeric object\r\n this._setSettings(userOptions, false);\r\n //TODO If `styleRules` is not null, add by default a class 'autoNumeric' that adds transition to color, background-color, border-color properties\r\n // Check if the DOM element is supported\r\n this._checkElement();\r\n\r\n // Store the additional attributes inside the AutoNumeric object\r\n // Note: This variable is needed and not a duplicate of `initialValueOnFirstKeydown` nor `valueOnFocus` since it serves a different purpose and has a different lifecycle\r\n this.savedCancellableValue = null;\r\n\r\n // Initialize the undo/redo variables\r\n this.historyTable = []; // Keep track of *all* valid states of the element value\r\n this.historyTableIndex = -1; // Pointer to the current undo/redo state. This will be set to '0' during initialization since it first adds itself.\r\n this.onGoingRedo = false; // Variable that keeps track if a 'redo' is ongoing (in order to prevent an 'undo' to be launch when releasing the shift key before the ctrl key after a 'redo' shortcut)\r\n\r\n // Initialize the parent form element, if any\r\n this.parentForm = this._getParentForm();\r\n\r\n // Set the initial value if it exists and if the `formatOnPageLoad` option will allow it\r\n if (!this.runOnce && this.settings.formatOnPageLoad) {\r\n // Format the element value if needed\r\n this._formatDefaultValueOnPageLoad(initialValue);\r\n } else {\r\n // Otherwise set the `rawValue` and the element value, but do not format the latter yet\r\n let valueToSet;\r\n if (AutoNumericHelper.isNull(initialValue)) {\r\n switch (this.settings.emptyInputBehavior) {\r\n case AutoNumeric.options.emptyInputBehavior.min:\r\n valueToSet = this.settings.minimumValue;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.max:\r\n valueToSet = this.settings.maximumValue;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.zero:\r\n valueToSet = \"0\";\r\n break;\r\n // In order to stay consistent when `formatOnPageLoad` is set to `true`, it's still impossible to set the `null` value as the initial value\r\n case AutoNumeric.options.emptyInputBehavior.focus:\r\n case AutoNumeric.options.emptyInputBehavior.press:\r\n case AutoNumeric.options.emptyInputBehavior.always:\r\n case AutoNumeric.options.emptyInputBehavior.null:\r\n valueToSet = \"\";\r\n break;\r\n // When `emptyInputBehavior` is a number or a string representing a number\r\n default:\r\n valueToSet = this.settings.emptyInputBehavior;\r\n }\r\n } else {\r\n valueToSet = initialValue;\r\n }\r\n\r\n this._setElementAndRawValue(valueToSet);\r\n }\r\n\r\n this.runOnce = true;\r\n\r\n // Add the events listeners only on input or editable elements\r\n this.hasEventListeners = false;\r\n if (this.isInputElement || this.isContentEditable) {\r\n if (!this.settings.noEventListeners) {\r\n //XXX Here we make sure the global list is created after creating the event listeners, to only create the event listeners on `document` once\r\n this._createEventListeners();\r\n }\r\n\r\n this._setWritePermissions(true);\r\n }\r\n\r\n // Save the initial values (html attribute + element.value) for the pristine test\r\n this._saveInitialValues(initialValue);\r\n\r\n // Setup the data for the persistent storage solution (ie. sessionStorage or cookies)\r\n this.sessionStorageAvailable = this.constructor._storageTest();\r\n this.storageNamePrefix = \"AUTO_\"; // The prefix for the raw value storage name variable can be modified here\r\n this._setPersistentStorageName();\r\n\r\n // --------------------------------------------------------\r\n // -------------- Tracking\r\n this.validState = true; // Keep track if the element is in the valid state\r\n this.isFocused = false; // Keep track if the element is currently focused\r\n this.isWheelEvent = false; // Keep track if a mouse wheel event is currently ongoing\r\n this.isDropEvent = false; // Keep track if a drop event is currently ongoing\r\n this.isEditing = false; // Keep track if the user is currently editing the element\r\n this.rawValueOnFocus = void 0; // Keep track of the rawValue (needed to define if a change event must be sent on blur or enter key)\r\n // Watch any external changes to the element value/textContent/nodeValue and `set()` the new value so that it gets formatted/saved in the history\r\n this.internalModification = false; // This is temporarily set to `true` only when the AutoNumeric object does update the element value\r\n this.attributeToWatch = this._getAttributeToWatch();\r\n this.getterSetter = Object.getOwnPropertyDescriptor(this.domElement.__proto__, this.attributeToWatch);\r\n this._addWatcher();\r\n\r\n if (this.settings.createLocalList) {\r\n // Keep track of every AutoNumeric elements that this object initialized\r\n this._createLocalList();\r\n }\r\n\r\n // Keep track of all AutoNumeric elements in the current web page\r\n this.constructor._addToGlobalList(this);\r\n\r\n // --------------------------------------------------------\r\n // -------------- Methods\r\n // Create the global functions\r\n this.global = {\r\n /**\r\n * Set the same given element value for each elements in the local AutoNumeric element list, and format those elements immediately\r\n *\r\n * @param {number|string} newValue The value must be a number or a numeric string\r\n * @param {object} options A settings object that will override the current settings. Note: the update is done only if the `newValue` is defined.\r\n */\r\n set: (newValue, options = null) => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.set(newValue, options);\r\n });\r\n },\r\n\r\n /**\r\n * Set the value given value directly as the DOM element value, without formatting it beforehand.\r\n * This sets the same unformatted value for each elements in the local AutoNumeric element list.\r\n *\r\n * @param {number|string} value\r\n * @param {object} options\r\n */\r\n setUnformatted: (value, options = null) => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.setUnformatted(value, options);\r\n });\r\n },\r\n\r\n /**\r\n * This is an alias of the `getNumericString()` function, and should not be used anymore.\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @returns {Array<string>}\r\n * @deprecated\r\n */\r\n get: (callback = null) => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.get());\r\n });\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Return an array of the unformatted values (as a string) of each AutoNumeric element of the local AutoNumeric element list\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @returns {Array<string>}\r\n */\r\n getNumericString: (callback = null) => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.getNumericString());\r\n });\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Return an array of the current formatted values (as a string) of each AutoNumeric element of the local AutoNumeric element list\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @returns {Array<string>}\r\n */\r\n getFormatted: (callback = null) => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.getFormatted());\r\n });\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Return an array of the element unformatted values (as a real Javascript number), for each element of the local AutoNumeric element list\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @returns {Array<number>}\r\n */\r\n getNumber: (callback = null) => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.getNumber());\r\n });\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Returns the unformatted values (following the `outputFormat` setting) of each element of the local AutoNumeric element list into an array\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @returns {Array<string>}\r\n */\r\n getLocalized: (callback = null) => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.getLocalized());\r\n });\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Force each element of the local AutoNumeric element list to reformat its value\r\n */\r\n reformat: () => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.reformat();\r\n });\r\n },\r\n\r\n /**\r\n * Remove the formatting and keep only the raw unformatted value (as a numericString) in each elements of the local AutoNumeric element list\r\n */\r\n unformat: () => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.unformat();\r\n });\r\n },\r\n\r\n /**\r\n * Remove the formatting and keep only the localized unformatted value in the element, with the option to override the default outputFormat if needed\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n */\r\n unformatLocalized: (forcedOutputFormat = null) => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.unformatLocalized(forcedOutputFormat);\r\n });\r\n },\r\n\r\n /**\r\n * Updates the AutoNumeric settings, and immediately format the elements accordingly, for each elements of the local AutoNumeric element list\r\n *\r\n * @param {object} newOptions This can be either one or more option objects\r\n */\r\n update: (...newOptions) => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.update(...newOptions);\r\n });\r\n },\r\n\r\n /**\r\n * Return `true` if *all* the autoNumeric-managed elements are pristine, if their raw value hasn't changed.\r\n * By default, this returns `true` if the raw unformatted value is still the same even if the formatted one has changed (due to a configuration update for instance).\r\n *\r\n * @param {boolean} checkOnlyRawValue If set to `true`, the pristine value is done on the raw unformatted value, not the formatted one. If set to `false`, this also checks that the formatted value hasn't changed.\r\n * @returns {boolean}\r\n */\r\n isPristine: (checkOnlyRawValue = true) => {\r\n let isPristine = true;\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n if (isPristine && !aNObject.isPristine(checkOnlyRawValue)) {\r\n isPristine = false;\r\n }\r\n });\r\n\r\n return isPristine;\r\n },\r\n\r\n /**\r\n * Execute the `clear()` method on each AutoNumeric object in the local AutoNumeric element list\r\n *\r\n * @param {boolean} forceClearAll\r\n */\r\n clear: (forceClearAll = false) => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.clear(forceClearAll);\r\n });\r\n },\r\n\r\n /**\r\n * Execute the `remove()` method on each AutoNumeric object in the local AutoNumeric element list\r\n */\r\n remove: () => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.remove();\r\n });\r\n },\r\n\r\n /**\r\n * Execute the `wipe()` method on each AutoNumeric object in the local AutoNumeric element list\r\n */\r\n wipe: () => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.wipe();\r\n });\r\n },\r\n\r\n /**\r\n * Execute the `nuke()` method on each AutoNumeric object in the local AutoNumeric element list\r\n */\r\n nuke: () => {\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n aNObject.nuke();\r\n });\r\n },\r\n\r\n /**\r\n * Return `true` if the given AutoNumeric object (or DOM element) is in the local AutoNumeric element list\r\n *\r\n * @param {HTMLElement|HTMLInputElement|AutoNumeric} domElementOrAutoNumericObject\r\n * @returns {*}\r\n */\r\n has: (domElementOrAutoNumericObject) => {\r\n let result;\r\n if (domElementOrAutoNumericObject instanceof AutoNumeric) {\r\n result = this.autoNumericLocalList.has(domElementOrAutoNumericObject.node());\r\n } else {\r\n result = this.autoNumericLocalList.has(domElementOrAutoNumericObject);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Add an existing AutoNumeric object (or DOM element) to the local AutoNumeric element list, using the DOM element as the key.\r\n * This manages the case where `addObject` is used on an AutoNumeric object that already has multiple elements in its local list.\r\n *\r\n * @param {HTMLElement|HTMLInputElement|AutoNumeric} domElementOrAutoNumericObject\r\n */\r\n addObject: (domElementOrAutoNumericObject) => {\r\n // Start with the same data, whatever the user passed as arguments\r\n let domElement;\r\n let otherAutoNumericObject;\r\n if (domElementOrAutoNumericObject instanceof AutoNumeric) {\r\n domElement = domElementOrAutoNumericObject.node();\r\n otherAutoNumericObject = domElementOrAutoNumericObject;\r\n } else {\r\n domElement = domElementOrAutoNumericObject;\r\n otherAutoNumericObject = AutoNumeric.getAutoNumericElement(domElement);\r\n }\r\n\r\n // Check if the current autoNumeric object has a local list\r\n if (!this._hasLocalList()) {\r\n this._createLocalList();\r\n }\r\n\r\n // Check if the other autoNumeric object has a local list...\r\n let otherANLocalList = otherAutoNumericObject._getLocalList();\r\n if (otherANLocalList.size === 0) {\r\n // Special case if the other AutoNumeric object has an empty local list, then populate itself to it\r\n otherAutoNumericObject._createLocalList();\r\n otherANLocalList = otherAutoNumericObject._getLocalList(); // Update the other local list\r\n }\r\n\r\n let mergedLocalLists;\r\n if (otherANLocalList instanceof Map) {\r\n // ...If it does, merge the local lists together\r\n mergedLocalLists = AutoNumericHelper.mergeMaps(this._getLocalList(), otherANLocalList);\r\n } else {\r\n // ...If not, just set the current local list onto the other AutoNumeric object\r\n // We need to specify the AutoNumeric object, otherwise the `_addToLocalList` function would not correctly add the AutoNumeric object since we would not have a reference to it, but a reference to the current AutoNumeric object on which is called this method.\r\n this._addToLocalList(domElement, otherAutoNumericObject);\r\n mergedLocalLists = this._getLocalList();\r\n }\r\n\r\n // Update the resulting list, on all the objects of that local list (so that we can indifferently use `init()` on any object belonging to that list)\r\n mergedLocalLists.forEach((aNObject) => {\r\n aNObject._setLocalList(mergedLocalLists);\r\n });\r\n },\r\n\r\n /**\r\n * Remove the given AutoNumeric object (or DOM element) from the local AutoNumeric element list, using the DOM element as the key.\r\n * If this function attempts to remove the current AutoNumeric object from the local list, a warning is shown, but the deletion is still done.\r\n *\r\n * Special cases :\r\n * - If the current object removes itself, then it's removed from the shared local list, then a new empty local list is used/created\r\n * - If another object remove this object, then a local list with only this object is used/created\r\n *\r\n * @param {HTMLElement|HTMLInputElement|AutoNumeric} domElementOrAutoNumericObject\r\n * @param {boolean} keepCurrentANObject If set to `false`, then the function will also remove the current AutoNumeric object if asked, otherwise it will ignore it and print a warning message\r\n */\r\n removeObject: (domElementOrAutoNumericObject, keepCurrentANObject = false) => {\r\n // Start with the same data, whatever the user passed as arguments\r\n let domElement;\r\n let otherAutoNumericObject;\r\n if (domElementOrAutoNumericObject instanceof AutoNumeric) {\r\n domElement = domElementOrAutoNumericObject.node();\r\n otherAutoNumericObject = domElementOrAutoNumericObject;\r\n } else {\r\n domElement = domElementOrAutoNumericObject;\r\n otherAutoNumericObject = AutoNumeric.getAutoNumericElement(domElement);\r\n }\r\n\r\n // Remove the other object from the local list\r\n const initialCompleteLocalList = this.autoNumericLocalList;\r\n this.autoNumericLocalList.delete(domElement);\r\n\r\n // Update the local list for all objects in it\r\n initialCompleteLocalList.forEach((aNObject) => {\r\n aNObject._setLocalList(this.autoNumericLocalList);\r\n });\r\n\r\n if (!keepCurrentANObject && domElement === this.node()) {\r\n // This object is removed by itself\r\n // Empty the object local list\r\n otherAutoNumericObject._setLocalList(new Map());\r\n } else {\r\n // This object is removed by another object\r\n // Set the local list for the removed object, with only this object in it\r\n otherAutoNumericObject._createLocalList();\r\n }\r\n },\r\n\r\n /**\r\n * Remove all elements from the shared list, effectively emptying it.\r\n * This is the equivalent of calling `detach()` on each of its elements.\r\n *\r\n * @param {boolean} keepEachANObjectInItsOwnList If set to `true`, then instead of completely emptying the local list of each AutoNumeric objects, each one of those keeps itself in its own local list\r\n */\r\n empty: (keepEachANObjectInItsOwnList = false) => {\r\n const initialCompleteLocalList = this.autoNumericLocalList;\r\n\r\n // Update the local list for all objects in it\r\n initialCompleteLocalList.forEach((aNObject) => {\r\n if (keepEachANObjectInItsOwnList) {\r\n aNObject._createLocalList();\r\n } else {\r\n aNObject._setLocalList(new Map());\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Return an array containing all the AutoNumeric DOM elements that have been initialized by each other\r\n *\r\n * @returns {Array<HTMLElement>}\r\n */\r\n elements: () => {\r\n const result = [];\r\n this.autoNumericLocalList.forEach((aNObject) => {\r\n result.push(aNObject.node());\r\n });\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Return the `Map` object directly\r\n * @returns {Map}\r\n */\r\n getList: () => this.autoNumericLocalList,\r\n\r\n /**\r\n * Return the number of element in the local AutoNumeric element list\r\n * @returns {number}\r\n */\r\n size: () => this.autoNumericLocalList.size\r\n };\r\n\r\n // Create the functions that will allow to change each setting one by one\r\n /**\r\n * For each options, we define if we need to reformat the element content (does changing the options should change the way its value is displayed?).\r\n * If yes, then we use the `update()` for force a reformat, otherwise, we just update the `settings` object.\r\n */\r\n this.options = {\r\n /**\r\n * Reset any options set previously, by overwriting them with the default settings\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n reset: () => {\r\n //TODO Add a `settings` parameter so that the user can reset to a specific set of settings. This is different than update since it drops any non-default settings before using those new settings.\r\n this.settings = { rawValue: this.defaultRawValue }; // Here we pass the default rawValue in order to prevent showing a warning that we try to set an `undefined` value\r\n this.update(AutoNumeric.defaultSettings);\r\n\r\n return this;\r\n },\r\n allowDecimalPadding: (allowDecimalPadding) => {\r\n this.update({ allowDecimalPadding });\r\n\r\n return this;\r\n },\r\n alwaysAllowDecimalCharacter: (alwaysAllowDecimalCharacter) => {\r\n //FIXME Test this\r\n this.update({ alwaysAllowDecimalCharacter });\r\n\r\n return this;\r\n },\r\n caretPositionOnFocus: (caretPositionOnFocus) => {\r\n //FIXME test this\r\n this.settings.caretPositionOnFocus = caretPositionOnFocus;\r\n\r\n return this;\r\n },\r\n createLocalList: (createLocalList) => {\r\n this.settings.createLocalList = createLocalList;\r\n\r\n // Delete the local list when this is set to `false`, create it if this is set to `true` and there is not pre-existing list\r\n if (this.settings.createLocalList) {\r\n if (!this._hasLocalList()) {\r\n this._createLocalList();\r\n }\r\n } else {\r\n this._deleteLocalList();\r\n }\r\n\r\n return this;\r\n },\r\n currencySymbol: (currencySymbol) => {\r\n this.update({ currencySymbol });\r\n\r\n return this;\r\n },\r\n currencySymbolPlacement: (currencySymbolPlacement) => {\r\n this.update({ currencySymbolPlacement });\r\n\r\n return this;\r\n },\r\n decimalCharacter: (decimalCharacter) => {\r\n this.update({ decimalCharacter });\r\n\r\n return this;\r\n },\r\n decimalCharacterAlternative: (decimalCharacterAlternative) => {\r\n this.settings.decimalCharacterAlternative = decimalCharacterAlternative;\r\n\r\n return this;\r\n },\r\n /**\r\n * Update the decimal places globally, which means this override any previously set number of decimal shown on focus, on blur, or in the raw value.\r\n *\r\n * @param {int} decimalPlaces\r\n * @returns {AutoNumeric}\r\n */\r\n decimalPlaces: (decimalPlaces) => {\r\n AutoNumericHelper.warning(\r\n \"Using `options.decimalPlaces()` instead of calling the specific `options.decimalPlacesRawValue()`, `options.decimalPlacesShownOnFocus()` and `options.decimalPlacesShownOnBlur()` methods will reset those options.\\nPlease call the specific methods if you do not want to reset those.\",\r\n this.settings.showWarnings\r\n );\r\n this.update({ decimalPlaces });\r\n\r\n return this;\r\n },\r\n decimalPlacesRawValue: (decimalPlacesRawValue) => {\r\n //FIXME test this\r\n this.update({ decimalPlacesRawValue });\r\n\r\n return this;\r\n },\r\n decimalPlacesShownOnBlur: (decimalPlacesShownOnBlur) => {\r\n this.update({ decimalPlacesShownOnBlur });\r\n\r\n return this;\r\n },\r\n decimalPlacesShownOnFocus: (decimalPlacesShownOnFocus) => {\r\n this.update({ decimalPlacesShownOnFocus });\r\n\r\n return this;\r\n },\r\n defaultValueOverride: (defaultValueOverride) => {\r\n this.update({ defaultValueOverride });\r\n\r\n return this;\r\n },\r\n digitalGroupSpacing: (digitalGroupSpacing) => {\r\n this.update({ digitalGroupSpacing });\r\n\r\n return this;\r\n },\r\n digitGroupSeparator: (digitGroupSeparator) => {\r\n this.update({ digitGroupSeparator });\r\n\r\n return this;\r\n },\r\n divisorWhenUnfocused: (divisorWhenUnfocused) => {\r\n this.update({ divisorWhenUnfocused });\r\n\r\n return this;\r\n },\r\n emptyInputBehavior: (emptyInputBehavior) => {\r\n if (this.rawValue === null && emptyInputBehavior !== AutoNumeric.options.emptyInputBehavior.null) {\r\n // Special case : if the current `rawValue` is `null` and the `emptyInputBehavior` is changed to something else than `'null'`, then it makes that `rawValue` invalid.\r\n // Here we can either prevent the option update and throw an error, or still accept the option update and update the value from `null` to `''`.\r\n // We cannot keep `rawValue` to `null` since if `emptyInputBehavior` is not set to `null`, lots of function assume `rawValue` is a string.\r\n AutoNumericHelper.warning(\r\n `You are trying to modify the \\`emptyInputBehavior\\` option to something different than \\`'null'\\` (${emptyInputBehavior}), but the element raw value is currently set to \\`null\\`. This would result in an invalid \\`rawValue\\`. In order to fix that, the element value has been changed to the empty string \\`''\\`.`,\r\n this.settings.showWarnings\r\n );\r\n this.rawValue = \"\";\r\n }\r\n\r\n this.update({ emptyInputBehavior });\r\n\r\n return this;\r\n },\r\n eventBubbles: (eventBubbles) => {\r\n this.settings.eventBubbles = eventBubbles;\r\n\r\n return this;\r\n },\r\n eventIsCancelable: (eventIsCancelable) => {\r\n this.settings.eventIsCancelable = eventIsCancelable;\r\n\r\n return this;\r\n },\r\n failOnUnknownOption: (failOnUnknownOption) => {\r\n this.settings.failOnUnknownOption = failOnUnknownOption; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n formatOnPageLoad: (formatOnPageLoad) => {\r\n this.settings.formatOnPageLoad = formatOnPageLoad; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n formulaMode: (formulaMode) => {\r\n this.settings.formulaMode = formulaMode; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n historySize: (historySize) => {\r\n this.settings.historySize = historySize;\r\n\r\n return this;\r\n },\r\n invalidClass: (invalidClass) => {\r\n this.settings.invalidClass = invalidClass; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n isCancellable: (isCancellable) => {\r\n this.settings.isCancellable = isCancellable; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n leadingZero: (leadingZero) => {\r\n this.update({ leadingZero });\r\n\r\n return this;\r\n },\r\n maximumValue: (maximumValue) => {\r\n this.update({ maximumValue });\r\n\r\n return this;\r\n },\r\n minimumValue: (minimumValue) => {\r\n this.update({ minimumValue });\r\n\r\n return this;\r\n },\r\n modifyValueOnWheel: (modifyValueOnWheel) => {\r\n this.settings.modifyValueOnWheel = modifyValueOnWheel; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n negativeBracketsTypeOnBlur: (negativeBracketsTypeOnBlur) => {\r\n this.update({ negativeBracketsTypeOnBlur });\r\n\r\n return this;\r\n },\r\n negativePositiveSignPlacement: (negativePositiveSignPlacement) => {\r\n this.update({ negativePositiveSignPlacement });\r\n\r\n return this;\r\n },\r\n negativeSignCharacter: (negativeSignCharacter) => {\r\n this.update({ negativeSignCharacter });\r\n\r\n return this;\r\n },\r\n noEventListeners: (noEventListeners) => {\r\n //TODO test this with unit tests\r\n if (\r\n noEventListeners === AutoNumeric.options.noEventListeners.noEvents &&\r\n this.settings.noEventListeners === AutoNumeric.options.noEventListeners.addEvents\r\n ) {\r\n // Remove the events once\r\n this._removeEventListeners();\r\n }\r\n\r\n this.update({ noEventListeners });\r\n\r\n return this;\r\n },\r\n onInvalidPaste: (onInvalidPaste) => {\r\n this.settings.onInvalidPaste = onInvalidPaste; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n outputFormat: (outputFormat) => {\r\n this.settings.outputFormat = outputFormat;\r\n\r\n return this;\r\n },\r\n overrideMinMaxLimits: (overrideMinMaxLimits) => {\r\n this.update({ overrideMinMaxLimits });\r\n\r\n return this;\r\n },\r\n positiveSignCharacter: (positiveSignCharacter) => {\r\n this.update({ positiveSignCharacter });\r\n\r\n return this;\r\n },\r\n rawValueDivisor: (rawValueDivisor) => {\r\n this.update({ rawValueDivisor });\r\n\r\n return this;\r\n },\r\n readOnly: (readOnly) => {\r\n // When changing the readOnly attribute, the raw and formatted values do not change, so no need to call the costly 'update()` method\r\n this.settings.readOnly = readOnly;\r\n this._setWritePermissions();\r\n\r\n return this;\r\n },\r\n roundingMethod: (roundingMethod) => {\r\n this.update({ roundingMethod });\r\n\r\n return this;\r\n },\r\n saveValueToSessionStorage: (saveValueToSessionStorage) => {\r\n this.update({ saveValueToSessionStorage });\r\n\r\n return this;\r\n },\r\n symbolWhenUnfocused: (symbolWhenUnfocused) => {\r\n this.update({ symbolWhenUnfocused });\r\n\r\n return this;\r\n },\r\n selectNumberOnly: (selectNumberOnly) => {\r\n this.settings.selectNumberOnly = selectNumberOnly; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n selectOnFocus: (selectOnFocus) => {\r\n this.settings.selectOnFocus = selectOnFocus; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n serializeSpaces: (serializeSpaces) => {\r\n this.settings.serializeSpaces = serializeSpaces; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n showOnlyNumbersOnFocus: (showOnlyNumbersOnFocus) => {\r\n this.update({ showOnlyNumbersOnFocus });\r\n\r\n return this;\r\n },\r\n showPositiveSign: (showPositiveSign) => {\r\n this.update({ showPositiveSign });\r\n\r\n return this;\r\n },\r\n showWarnings: (showWarnings) => {\r\n this.settings.showWarnings = showWarnings; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n styleRules: (styleRules) => {\r\n this.update({ styleRules });\r\n\r\n return this;\r\n },\r\n suffixText: (suffixText) => {\r\n this.update({ suffixText });\r\n\r\n return this;\r\n },\r\n unformatOnHover: (unformatOnHover) => {\r\n this.settings.unformatOnHover = unformatOnHover; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n unformatOnSubmit: (unformatOnSubmit) => {\r\n this.settings.unformatOnSubmit = unformatOnSubmit; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n valuesToStrings: (valuesToStrings) => {\r\n this.update({ valuesToStrings });\r\n\r\n return this;\r\n },\r\n watchExternalChanges: (watchExternalChanges) => {\r\n //TODO test this with unit tests\r\n this.update({ watchExternalChanges });\r\n\r\n return this;\r\n },\r\n wheelOn: (wheelOn) => {\r\n this.settings.wheelOn = wheelOn; //TODO test this with unit tests\r\n\r\n return this;\r\n },\r\n wheelStep: (wheelStep) => {\r\n this.settings.wheelStep = wheelStep; //TODO test this with unit tests\r\n\r\n return this;\r\n }\r\n };\r\n\r\n // Once the autoNumeric element has been initialized, broadcast that message with additional info.\r\n // Note: When using `AutoNumeric.multiple()`, one event is sent *per* element initialized\r\n this._triggerEvent(AutoNumeric.events.initialized, this.domElement, {\r\n newValue: AutoNumericHelper.getElementValue(this.domElement),\r\n newRawValue: this.rawValue,\r\n error: null,\r\n aNElement: this\r\n });\r\n }\r\n\r\n /**\r\n * Return the autoNumeric version number (for debugging purpose)\r\n *\r\n * @returns {string}\r\n */\r\n static version() {\r\n return \"4.6.0\";\r\n }\r\n\r\n /**\r\n * Take the parameters given to the AutoNumeric object, and output the three variables that are needed to finish initializing it :\r\n * - domElement : The target DOM element\r\n * - initialValue : The initial value, or `null` if none is given\r\n * - userOptions : The option object\r\n *\r\n * @param {object|Array|number|string} arg1\r\n * @param {object|Array|number|string|null} arg2\r\n * @param {object|Array|number|string|null} arg3\r\n * @returns {{domElement: *, initialValue: *, userOptions: *}}\r\n * @throws\r\n * @private\r\n */\r\n static _setArgumentsValues(arg1, arg2, arg3) {\r\n // Basic check on the argument count\r\n if (AutoNumericHelper.isNull(arg1)) {\r\n AutoNumericHelper.throwError(\r\n \"At least one valid parameter is needed in order to initialize an AutoNumeric object\"\r\n );\r\n }\r\n\r\n // Prepare the arguments in order to create the AutoNumeric object with the right values\r\n // Test the argument types\r\n const isArg1Element = AutoNumericHelper.isElement(arg1);\r\n const isArg1String = AutoNumericHelper.isString(arg1);\r\n\r\n const isArg2Object = AutoNumericHelper.isObject(arg2);\r\n const isArg2Array = Array.isArray(arg2) && arg2.length > 0;\r\n const isArg2Number = AutoNumericHelper.isNumberOrArabic(arg2) || arg2 === \"\";\r\n const isArg2PreDefinedOptionName = this._isPreDefinedOptionValid(arg2);\r\n const isArg2Null = AutoNumericHelper.isNull(arg2);\r\n const isArg2EmptyString = AutoNumericHelper.isEmptyString(arg2);\r\n\r\n const isArg3Object = AutoNumericHelper.isObject(arg3);\r\n const isArg3Array = Array.isArray(arg3) && arg3.length > 0;\r\n const isArg3Null = AutoNumericHelper.isNull(arg3);\r\n const isArg3PreDefinedOptionName = this._isPreDefinedOptionValid(arg3);\r\n\r\n // Given the parameters passed, sort the data and return a stable state before the initialization\r\n let domElement;\r\n let userOptions;\r\n let initialValue;\r\n\r\n //TODO Simplify those tests -->\r\n if (isArg1Element && isArg2Null && isArg3Null) {\r\n // new AutoNumeric(domElement); // With the default options\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = null;\r\n } else if (isArg1Element && isArg2Number && isArg3Null) {\r\n // new AutoNumeric(domElement, 12345.789); // With the default options, and an initial value\r\n // new AutoNumeric(domElement, '12345.789');\r\n domElement = arg1;\r\n initialValue = arg2;\r\n userOptions = null;\r\n } else if (isArg1Element && isArg2Object && isArg3Null) {\r\n // new AutoNumeric(domElement, { options }); // With one option object\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = arg2;\r\n } else if (isArg1Element && isArg2PreDefinedOptionName && isArg3Null) {\r\n // new AutoNumeric(domElement, 'euroPos'); // With one pre-defined option name\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = this._getOptionObject(arg2);\r\n } else if (isArg1Element && isArg2Array && isArg3Null) {\r\n // new AutoNumeric(domElement, [{ options1 }, { options2 }]); // With multiple option objects (the latest option overwriting the previous ones)\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = this.mergeOptions(arg2);\r\n } else if (isArg1Element && (isArg2Null || isArg2EmptyString) && isArg3Object) {\r\n // new AutoNumeric(domElement, null, { options }); // With one option object\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = arg3;\r\n } else if (isArg1Element && (isArg2Null || isArg2EmptyString) && isArg3Array) {\r\n // new AutoNumeric(domElement, null, [{ options1 }, { options2 }]); // With multiple option objects\r\n domElement = arg1;\r\n initialValue = null;\r\n userOptions = this.mergeOptions(arg3);\r\n } else if (isArg1String && isArg2Null && isArg3Null) {\r\n // new AutoNumeric('.myCssClass > input');\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = null;\r\n } else if (isArg1String && isArg2Object && isArg3Null) {\r\n // new AutoNumeric('.myCssClass > input', { options });\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = arg2;\r\n } else if (isArg1String && isArg2PreDefinedOptionName && isArg3Null) {\r\n // new AutoNumeric('.myCssClass > input', 'euroPos');\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = this._getOptionObject(arg2);\r\n } else if (isArg1String && isArg2Array && isArg3Null) {\r\n // new AutoNumeric('.myCssClass > input', [{ options1 }, { options2 }]); // With multiple option objects\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = this.mergeOptions(arg2);\r\n } else if (isArg1String && (isArg2Null || isArg2EmptyString) && isArg3Object) {\r\n // new AutoNumeric('.myCssClass > input', null, { options });\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = arg3;\r\n } else if (isArg1String && (isArg2Null || isArg2EmptyString) && isArg3Array) {\r\n // new AutoNumeric('.myCssClass > input', null, [{ options1 }, { options2 }]); // With multiple option objects\r\n domElement = document.querySelector(arg1);\r\n initialValue = null;\r\n userOptions = this.mergeOptions(arg3);\r\n } else if (isArg1String && isArg2Number && isArg3Null) {\r\n // new AutoNumeric('.myCssClass > input', 12345.789);\r\n // new AutoNumeric('.myCssClass > input', '12345.789');\r\n // new AutoNumeric('.myCssClass > input', '');\r\n domElement = document.querySelector(arg1);\r\n initialValue = arg2;\r\n userOptions = null;\r\n } else if (isArg1String && isArg2Number && isArg3Object) {\r\n // new AutoNumeric('.myCssClass > input', 12345.789, { options });\r\n // new AutoNumeric('.myCssClass > input', '12345.789', { options });\r\n // new AutoNumeric('.myCssClass > input', '', { options });\r\n domElement = document.querySelector(arg1);\r\n initialValue = arg2;\r\n userOptions = arg3;\r\n } else if (isArg1String && isArg2Number && isArg3PreDefinedOptionName) {\r\n // new AutoNumeric('.myCssClass > input', 12345.789, 'euroPos');\r\n // new AutoNumeric('.myCssClass > input', '12345.789', 'euroPos');\r\n // new AutoNumeric('.myCssClass > input', '', 'euroPos');\r\n domElement = document.querySelector(arg1);\r\n initialValue = arg2;\r\n userOptions = this._getOptionObject(arg3);\r\n } else if (isArg1String && isArg2Number && isArg3Array) {\r\n // new AutoNumeric('.myCssClass > input', 12345.789, [{ options1 }, 'euroPos', { options2 }]);\r\n // new AutoNumeric('.myCssClass > input', '12345.789', [{ options1 }, 'euroPos', { options2 }]);\r\n // new AutoNumeric('.myCssClass > input', '', [{ options1 }, 'euroPos', { options2 }]);\r\n domElement = document.querySelector(arg1);\r\n initialValue = arg2;\r\n userOptions = this.mergeOptions(arg3);\r\n } else if (isArg1Element && isArg2Number && isArg3Object) {\r\n // new AutoNumeric(domElement, 12345.789, { options });\r\n // new AutoNumeric(domElement, '12345.789', { options });\r\n // new AutoNumeric(domElement, '', { options });\r\n domElement = arg1;\r\n initialValue = arg2;\r\n userOptions = arg3;\r\n } else if (isArg1Element && isArg2Number && isArg3PreDefinedOptionName) {\r\n // new AutoNumeric(domElement, 12345.789, 'euroPos');\r\n // new AutoNumeric(domElement, '12345.789', 'euroPos');\r\n // new AutoNumeric(domElement, '', 'euroPos');\r\n domElement = arg1;\r\n initialValue = arg2;\r\n userOptions = this._getOptionObject(arg3);\r\n } else if (isArg1Element && isArg2Number && isArg3Array) {\r\n // new AutoNumeric(domElement, 12345.789, [{ options1 }, { options2 }]);\r\n // new AutoNumeric(domElement, '12345.789', [{ options1 }, { options2 }]);\r\n // new AutoNumeric(domElement, '', [{ options1 }, { options2 }]);\r\n domElement = arg1;\r\n initialValue = arg2;\r\n userOptions = this.mergeOptions(arg3);\r\n } else {\r\n AutoNumericHelper.throwError(\r\n `The parameters given to the AutoNumeric object are not valid, '${arg1}', '${arg2}' and '${arg3}' given.`\r\n );\r\n }\r\n\r\n if (AutoNumericHelper.isNull(domElement)) {\r\n AutoNumericHelper.throwError(\r\n `The selector '${arg1}' did not select any valid DOM element. Please check on which element you called AutoNumeric.`\r\n );\r\n }\r\n\r\n return { domElement, initialValue, userOptions };\r\n }\r\n\r\n /**\r\n * Merge the option objects found in the given array `optionsArray`.\r\n * If a `string` is found, then we try to get the related pre-defined option using that string as its name.\r\n * When merging the options, the latest option overwrite any previously set. This allows to fine tune a pre-defined option for instance.\r\n *\r\n * @param {Array<object|string>} optionsArray\r\n * @returns {{}}\r\n */\r\n static mergeOptions(optionsArray) {\r\n // This allows the user to use multiple options (strings or objects) in an array, and overwrite the previous one with the next option element ; this is useful to tune the wanted format\r\n const mergedOptions = {};\r\n optionsArray.forEach((optionObjectOrPredefinedOptionString) => {\r\n Object.assign(mergedOptions, this._getOptionObject(optionObjectOrPredefinedOptionString));\r\n });\r\n\r\n return mergedOptions;\r\n }\r\n\r\n /**\r\n * Return `true` if the given pre-defined option name is an attribute of the `AutoNumeric.predefinedOptions` object\r\n *\r\n * @param {string} preDefinedOptionName\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isPreDefinedOptionValid(preDefinedOptionName) {\r\n return Object.prototype.hasOwnProperty.call(AutoNumeric.predefinedOptions, preDefinedOptionName);\r\n }\r\n\r\n /**\r\n * Return an option object based on the given parameter.\r\n * If `optionObjectOrPredefinedName` is as string, then we retrieve the pre-defined option object, if it's an object, we use it as is.\r\n *\r\n * @param {object|string} optionObjectOrPredefinedName\r\n * @returns {object}\r\n */\r\n static _getOptionObject(optionObjectOrPredefinedName) {\r\n let options;\r\n if (AutoNumericHelper.isString(optionObjectOrPredefinedName)) {\r\n options = AutoNumeric.getPredefinedOptions()[optionObjectOrPredefinedName];\r\n if (options === void 0 || options === null) {\r\n // If the given pre-defined name does not exist, warn that something is wrong, and continue the execution of the initialization\r\n AutoNumericHelper.warning(\r\n `The given pre-defined option [${optionObjectOrPredefinedName}] is not recognized by autoNumeric. Please check that pre-defined option name.`,\r\n true\r\n );\r\n }\r\n } else {\r\n // A `settings` object\r\n options = optionObjectOrPredefinedName;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n /**\r\n * Save the initial element values for later use in the pristine test.\r\n * Those values are :\r\n * - the html attribute (ie. <input value='42'>), and\r\n * - the script `value` (ie. `let domElement.value`)\r\n *\r\n * @param {null|number|string} initialValue\r\n * @private\r\n */\r\n _saveInitialValues(initialValue) {\r\n // Keep the very first initial values (in the html attribute and set by the script). This is needed to check if the element is pristine.\r\n // Save the html attribute 'value'\r\n this.initialValueHtmlAttribute = AutoNumericHelper.scientificToDecimal(this.domElement.getAttribute(\"value\"));\r\n if (AutoNumericHelper.isNull(this.initialValueHtmlAttribute)) {\r\n // Set the default empty value attribute instead of `null`, since if the initial value is null, the empty string is used\r\n this.initialValueHtmlAttribute = \"\";\r\n }\r\n\r\n // Save the 'script' value\r\n this.initialValue = initialValue;\r\n if (AutoNumericHelper.isNull(this.initialValue)) {\r\n // Same as above\r\n this.initialValue = \"\";\r\n }\r\n }\r\n\r\n /**\r\n * Generate all the event listeners for the given DOM element\r\n * @private\r\n */\r\n _createEventListeners() {\r\n this.formulaMode = false;\r\n // Create references to the event handler functions, so we can then cleanly removes those listeners if needed\r\n // That would not be possible if we used closures directly in the event handler declarations\r\n this._onFocusInFunc = (e) => {\r\n this._onFocusIn(e);\r\n };\r\n this._onFocusInAndMouseEnterFunc = (e) => {\r\n this._onFocusInAndMouseEnter(e);\r\n };\r\n this._onFocusFunc = () => {\r\n this._onFocus();\r\n };\r\n this._onKeydownFunc = (e) => {\r\n this._onKeydown(e);\r\n };\r\n this._onKeypressFunc = (e) => {\r\n this._onKeypress(e);\r\n };\r\n this._onKeyupFunc = (e) => {\r\n this._onKeyup(e);\r\n };\r\n this._onFocusOutAndMouseLeaveFunc = (e) => {\r\n this._onFocusOutAndMouseLeave(e);\r\n };\r\n this._onPasteFunc = (e) => {\r\n this._onPaste(e);\r\n };\r\n this._onWheelFunc = (e) => {\r\n this._onWheel(e);\r\n };\r\n this._onDropFunc = (e) => {\r\n this._onDrop(e);\r\n };\r\n this._onKeydownGlobalFunc = (e) => {\r\n this._onKeydownGlobal(e);\r\n };\r\n this._onKeyupGlobalFunc = (e) => {\r\n this._onKeyupGlobal(e);\r\n };\r\n\r\n // Add the event listeners\r\n this.domElement.addEventListener(\"focusin\", this._onFocusInFunc, false);\r\n this.domElement.addEventListener(\"focus\", this._onFocusInAndMouseEnterFunc, false);\r\n this.domElement.addEventListener(\"focus\", this._onFocusFunc, false);\r\n this.domElement.addEventListener(\"mouseenter\", this._onFocusInAndMouseEnterFunc, false);\r\n this.domElement.addEventListener(\"keydown\", this._onKeydownFunc, false);\r\n this.domElement.addEventListener(\"keypress\", this._onKeypressFunc, false);\r\n this.domElement.addEventListener(\"keyup\", this._onKeyupFunc, false);\r\n this.domElement.addEventListener(\"blur\", this._onFocusOutAndMouseLeaveFunc, false);\r\n this.domElement.addEventListener(\"mouseleave\", this._onFocusOutAndMouseLeaveFunc, false);\r\n this.domElement.addEventListener(\"paste\", this._onPasteFunc, false);\r\n this.domElement.addEventListener(\"wheel\", this._onWheelFunc, false);\r\n this.domElement.addEventListener(\"drop\", this._onDropFunc, false);\r\n this._setupFormListener();\r\n\r\n // Keep track if the event listeners have been initialized on this object\r\n this.hasEventListeners = true;\r\n\r\n // Create one global event listener for the keyup event on the document object, which will be shared by all the autoNumeric elements\r\n if (!AutoNumeric._doesGlobalListExists()) {\r\n document.addEventListener(\"keydown\", this._onKeydownGlobalFunc, false);\r\n document.addEventListener(\"keyup\", this._onKeyupGlobalFunc, false);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all the autoNumeric-related event listeners for the given DOM element\r\n * @private\r\n */\r\n _removeEventListeners() {\r\n this.domElement.removeEventListener(\"focusin\", this._onFocusInFunc, false);\r\n this.domElement.removeEventListener(\"focus\", this._onFocusInAndMouseEnterFunc, false);\r\n this.domElement.removeEventListener(\"focus\", this._onFocusFunc, false);\r\n this.domElement.removeEventListener(\"mouseenter\", this._onFocusInAndMouseEnterFunc, false);\r\n this.domElement.removeEventListener(\"blur\", this._onFocusOutAndMouseLeaveFunc, false);\r\n this.domElement.removeEventListener(\"mouseleave\", this._onFocusOutAndMouseLeaveFunc, false);\r\n this.domElement.removeEventListener(\"keydown\", this._onKeydownFunc, false);\r\n this.domElement.removeEventListener(\"keypress\", this._onKeypressFunc, false);\r\n this.domElement.removeEventListener(\"keyup\", this._onKeyupFunc, false);\r\n this.domElement.removeEventListener(\"paste\", this._onPasteFunc, false);\r\n this.domElement.removeEventListener(\"wheel\", this._onWheelFunc, false);\r\n this.domElement.removeEventListener(\"drop\", this._onDropFunc, false);\r\n this._removeFormListener();\r\n\r\n // Keep track if the event listeners have been initialized on this object\r\n this.hasEventListeners = false;\r\n\r\n document.removeEventListener(\"keydown\", this._onKeydownGlobalFunc, false);\r\n document.removeEventListener(\"keyup\", this._onKeyupGlobalFunc, false);\r\n }\r\n\r\n /**\r\n * Toggle the event listeners according to the `noEventListeners` option, if those were not activated/deactivated before\r\n * @private\r\n */\r\n _updateEventListeners() {\r\n if (!this.settings.noEventListeners && !this.hasEventListeners) {\r\n // Special case where an update is done on an element that did not activate its event listeners in the first place\r\n // ie. when an element is first created with `contenteditable=\"false\"`, then an update is done with `anElement.french()`\r\n this._createEventListeners();\r\n }\r\n\r\n if (this.settings.noEventListeners && this.hasEventListeners) {\r\n this._removeEventListeners();\r\n }\r\n }\r\n\r\n /**\r\n * Mark the parent <form> so that other AutoNumeric object will not add more listeners.\r\n * Add a counter so that when removing the AutoNumeric object, we only remove the submit listener if that count is equal to 0.\r\n * Also keep a reference to the 'submit' event handler function to be able to remove that handler later if the `_removeFormListener()` function is called from another AutoNumeric object.\r\n *\r\n * @private\r\n */\r\n _setupFormListener() {\r\n if (!AutoNumericHelper.isNull(this.parentForm)) {\r\n // Setup the handler function\r\n this._onFormSubmitFunc = () => {\r\n this._onFormSubmit();\r\n };\r\n this._onFormResetFunc = () => {\r\n this._onFormReset();\r\n };\r\n\r\n // Check if the parent form already has the AutoNumeric mark\r\n if (this._hasParentFormCounter()) {\r\n this._incrementParentFormCounter();\r\n } else {\r\n // If not, add the counter\r\n this._initializeFormCounterToOne();\r\n // And add the submit and reset event listeners\r\n this.parentForm.addEventListener(\"submit\", this._onFormSubmitFunc, false);\r\n this.parentForm.addEventListener(\"reset\", this._onFormResetFunc, false);\r\n // Also keep a reference to the handler function so that we can remove it later\r\n this._storeFormHandlerFunction();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove the form 'submit' event listener, as well as the `dataset` info (`anCount` and `anFormHandler`) from the parent form, only when there are only one AutoNumeric child element left in that <form>.\r\n * Otherwise decrement the `anCount`.\r\n *\r\n * @private\r\n */\r\n _removeFormListener() {\r\n if (!AutoNumericHelper.isNull(this.parentForm)) {\r\n // Check the parent form counter value\r\n const anCount = this._getParentFormCounter();\r\n\r\n if (anCount === 1) {\r\n // If it's 1, remove the listeners\r\n this.parentForm.removeEventListener(\"submit\", this._getFormHandlerFunction().submitFn, false);\r\n this.parentForm.removeEventListener(\"reset\", this._getFormHandlerFunction().resetFn, false);\r\n // Also remove the dataset info\r\n this._removeFormDataSetInfo();\r\n } else if (anCount > 1) {\r\n // Otherwise if it's >1 decrement the counter\r\n this._decrementParentFormCounter();\r\n } else {\r\n // If it's <1, throw an error\r\n AutoNumericHelper.throwError(`The AutoNumeric object count on the form is incoherent.`);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the parent form has the form counter attribute\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _hasParentFormCounter() {\r\n return \"anCount\" in this.parentForm.dataset;\r\n }\r\n\r\n /**\r\n * Return the count of AutoNumeric form children\r\n *\r\n * @returns {number}\r\n * @private\r\n */\r\n _getParentFormCounter() {\r\n return Number(this.parentForm.dataset.anCount);\r\n }\r\n\r\n /**\r\n * Set the count of AutoNumeric form children to 1 for the given form element, or if none are passed, the current `this.parentForm` one.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n * @private\r\n */\r\n _initializeFormCounterToOne(formElement = null) {\r\n this._getFormElement(formElement).dataset.anCount = 1;\r\n }\r\n\r\n /**\r\n * Increment the AutoNumeric form children count for the given form element, or if none are passed, the current `this.parentForm` one.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n * @private\r\n */\r\n _incrementParentFormCounter(formElement = null) {\r\n this._getFormElement(formElement).dataset.anCount++;\r\n }\r\n\r\n /**\r\n * Decrement the AutoNumeric form children count for the current `this.parentForm` form element.\r\n *\r\n * @private\r\n */\r\n _decrementParentFormCounter() {\r\n this.parentForm.dataset.anCount--;\r\n }\r\n\r\n /**\r\n * Return `true` if the global form handler list exists on the `window` object.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _doesFormHandlerListExists() {\r\n const type = typeof window.aNFormHandlerMap;\r\n\r\n return type !== \"undefined\" && type === \"object\";\r\n }\r\n\r\n /**\r\n * Create the global form handler list on the `window` object.\r\n *\r\n * @private\r\n */\r\n static _createFormHandlerList() {\r\n window.aNFormHandlerMap = new Map(); // I would have used a `WeakMap` here, but that does not allow using non-object for keys\r\n }\r\n\r\n /**\r\n * Return `true` if the given form element, or if none are passed, the current `this.parentForm` one has a form handler name.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _hasFormHandlerFunction(formElement = null) {\r\n return \"anFormHandler\" in this._getFormElement(formElement).dataset;\r\n }\r\n\r\n /**\r\n * Return the given form element, or defaults to `this.parentForm` if no argument is passed.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n * @returns {*}\r\n * @private\r\n */\r\n _getFormElement(formElement = null) {\r\n let formElementToUse;\r\n if (!AutoNumericHelper.isNull(formElement)) {\r\n formElementToUse = formElement;\r\n } else {\r\n formElementToUse = this.parentForm;\r\n }\r\n\r\n return formElementToUse;\r\n }\r\n\r\n /**\r\n * Generate a form handler unique name and store it in the global form handler list.\r\n * This also save that name in the dataset of the given form element.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n * @private\r\n */\r\n _storeFormHandlerFunction(formElement = null) {\r\n // Create the weakMap if it does not exist\r\n if (!this.constructor._doesFormHandlerListExists()) {\r\n this.constructor._createFormHandlerList();\r\n }\r\n\r\n // Generate a unique name and save it in the form dataset\r\n const formHandlerName = AutoNumericHelper.randomString();\r\n this._getFormElement(formElement).dataset.anFormHandler = formHandlerName;\r\n\r\n // Add the form handler name and handle function reference to the WeakMap\r\n window.aNFormHandlerMap.set(formHandlerName, { submitFn: this._onFormSubmitFunc, resetFn: this._onFormResetFunc });\r\n }\r\n\r\n /**\r\n * Return the form handler key name from the parent form element, for the global form handler list.\r\n *\r\n * @returns {string|*}\r\n * @private\r\n */\r\n _getFormHandlerKey() {\r\n if (!this._hasFormHandlerFunction()) {\r\n AutoNumericHelper.throwError(`Unable to retrieve the form handler name`);\r\n }\r\n\r\n const formHandlerName = this.parentForm.dataset.anFormHandler;\r\n if (formHandlerName === \"\") {\r\n AutoNumericHelper.throwError(`The form handler name is invalid`);\r\n }\r\n\r\n return formHandlerName;\r\n }\r\n\r\n /**\r\n * Return the 'submit' event handler function used for the parent form.\r\n *\r\n * @returns {function}\r\n * @private\r\n */\r\n _getFormHandlerFunction() {\r\n const formHandlerName = this._getFormHandlerKey();\r\n\r\n return window.aNFormHandlerMap.get(formHandlerName);\r\n }\r\n\r\n /**\r\n * Remove the dataset attributes `data-an-count` and `data-an-form-handler` from the parent form element.\r\n *\r\n * @private\r\n */\r\n _removeFormDataSetInfo() {\r\n // Just in case, set the counter to 0\r\n this._decrementParentFormCounter();\r\n // Remove the form handler function from the FormHandlerFunction Map\r\n window.aNFormHandlerMap.delete(this._getFormHandlerKey());\r\n // Lastly, remove the dataset attributes\r\n this.parentForm.removeAttribute(\"data-an-count\");\r\n this.parentForm.removeAttribute(\"data-an-form-handler\");\r\n }\r\n\r\n /**\r\n * Set the DOM element write permissions according to the current settings, by setting the `readonly` or `contenteditable` attributes depending of its tag type.\r\n * If the `useHtmlAttribute` parameter is set to `true`, then the `readonly` html attribute is used and has precedence over the `readOnly` option to set the element as read-only.\r\n *\r\n * @param {boolean} useHtmlAttribute If set to `true`, then the write permissions are set by taking into account the html 'readonly' attribute, even if the `readOnly` option is set to false\r\n * @private\r\n */\r\n _setWritePermissions(useHtmlAttribute = false) {\r\n if ((useHtmlAttribute && this.domElement.readOnly) || this.settings.readOnly) {\r\n this._setReadOnly();\r\n } else {\r\n this._setReadWrite();\r\n }\r\n }\r\n\r\n /**\r\n * Set the element to be read-only.\r\n * If the DOM element tag is not an `input`, then it `contenteditable` attribute is set to `false`.\r\n *\r\n * @private\r\n */\r\n _setReadOnly() {\r\n if (this.isInputElement) {\r\n this.domElement.readOnly = true;\r\n } else {\r\n this.domElement.setAttribute(\"contenteditable\", false);\r\n }\r\n }\r\n\r\n /**\r\n * Set the element to be read-write.\r\n *\r\n * @private\r\n */\r\n _setReadWrite() {\r\n if (this.isInputElement) {\r\n this.domElement.readOnly = false;\r\n } else {\r\n this.domElement.setAttribute(\"contenteditable\", true);\r\n }\r\n }\r\n\r\n /**\r\n * Add a watcher so that any external change to the AutoNumeric-managed element would be detected.\r\n * As soon as such change is detected, AutoNumeric then tries to `set()` the value so that it gets formatted and stored in the history.\r\n * //XXX For now, this only works when watching the `value` attribute, not the `textContent` one\r\n * @private\r\n */\r\n _addWatcher() {\r\n // `getterSetter` can be undefined when a non-input element is used\r\n if (!AutoNumericHelper.isUndefined(this.getterSetter)) {\r\n const { set: setter, get: getter } = this.getterSetter;\r\n Object.defineProperty(this.domElement, this.attributeToWatch, {\r\n configurable: true, // This is needed in some rare cases\r\n get: () => getter.call(this.domElement),\r\n set: (val) => {\r\n setter.call(this.domElement, val);\r\n // Only `set()` the value if the modification comes from an external source\r\n if (this.settings.watchExternalChanges && !this.internalModification) {\r\n this.set(val);\r\n }\r\n }\r\n });\r\n }\r\n\r\n //FIXME The code above fails for the `textContent` attribute since `this.getterSetter` is undefined when using `getOwnPropertyDescriptor()`\r\n /* //XXX The code below *almost* work for the textContent, but breaks some unit tests\r\n this.valueWatched = this.domElement[this.attributeToWatch];\r\n Object.defineProperty(this.domElement, this.attributeToWatch, {\r\n configurable: true, // This is needed in some rare cases\r\n get : () => this.valueWatched,\r\n set : val => {\r\n this.valueWatched = val;\r\n // Only `set()` the value if the modification comes from an external source\r\n if (this.settings.watchExternalChanges && !this.internalModification) {\r\n this.set(val);\r\n }\r\n },\r\n });\r\n */\r\n }\r\n\r\n /**\r\n * Remove the watcher on the AutoNumeric-managed element\r\n * Note: This needs to be called when the AutoNumeric element is 'removed', otherwise the getter/setter stays on the DOM element and that can lead to problem if the user initialize another AutoNumeric object on it.\r\n * @private\r\n */\r\n _removeWatcher() {\r\n // `getterSetter` can be undefined when a non-input element is used\r\n if (!AutoNumericHelper.isUndefined(this.getterSetter)) {\r\n const { set: setter, get: getter } = this.getterSetter;\r\n Object.defineProperty(this.domElement, this.attributeToWatch, {\r\n configurable: true, // This is needed in some rare cases\r\n get: () => getter.call(this.domElement),\r\n set: (val) => {\r\n setter.call(this.domElement, val);\r\n }\r\n });\r\n }\r\n\r\n //FIXME The code above fails for the `textContent` attribute since `this.getterSetter` is undefined when using `getOwnPropertyDescriptor()`\r\n /* //XXX The code below *almost* work for the textContent, but breaks some unit tests\r\n this.valueWatched = this.domElement[this.attributeToWatch];\r\n Object.defineProperty(this.domElement, this.attributeToWatch, {\r\n configurable: true, // This is needed in some rare cases\r\n get : () => this.valueWatched,\r\n set : val => {\r\n this.valueWatched = val;\r\n },\r\n });\r\n */\r\n }\r\n\r\n /**\r\n * Return the name of the object attribute that store the current formatted data in the DOM element.\r\n *\r\n * @returns {string}\r\n * @private\r\n */\r\n _getAttributeToWatch() {\r\n let attributeToWatch;\r\n if (this.isInputElement) {\r\n attributeToWatch = \"value\";\r\n } else {\r\n const nodeType = this.domElement.nodeType;\r\n if (\r\n nodeType === Node.ELEMENT_NODE ||\r\n nodeType === Node.DOCUMENT_NODE ||\r\n nodeType === Node.DOCUMENT_FRAGMENT_NODE\r\n ) {\r\n attributeToWatch = \"textContent\";\r\n } else if (nodeType === Node.TEXT_NODE) {\r\n attributeToWatch = \"nodeValue\";\r\n }\r\n }\r\n\r\n return attributeToWatch;\r\n }\r\n\r\n /**\r\n * Save the current raw value into the history table, along with the selection information.\r\n *\r\n * If the user has done some undos and tries to enter:\r\n * - a new and different number than the 'next' state, this drops the rest of the history table\r\n * - the very same number that result in the same rawValue than the 'next' state, we only move the history table pointer to the next state\r\n *\r\n * @private\r\n */\r\n _historyTableAdd() {\r\n //TODO Add a `this.settings.saveSelectionsIntoHistory` option to prevent saving the selections (in order to gain performance)\r\n const isEmptyHistoryTable = this.historyTable.length === 0;\r\n // Only add a new value if it's different than the previous one (to prevent infinitely adding values on mouseover for instance)\r\n if (isEmptyHistoryTable || this.rawValue !== this._historyTableCurrentValueUsed()) {\r\n // Trim the history table if the user changed the value of an intermediary state\r\n let addNewHistoryState = true;\r\n if (!isEmptyHistoryTable) {\r\n // If some undo has been done and the user type the exact same data than the next entry after the current history pointer, do no drop the rest of the 'redo' list, and just advance the historyTableIndex\r\n const nextHistoryStateIndex = this.historyTableIndex + 1;\r\n if (\r\n nextHistoryStateIndex < this.historyTable.length &&\r\n this.rawValue === this.historyTable[nextHistoryStateIndex].value\r\n ) {\r\n // If the character input result in the same state than the next one, do not remove the next history states nor add a new one\r\n addNewHistoryState = false;\r\n } else {\r\n // First remove anything that is after the current index\r\n AutoNumericHelper.arrayTrim(this.historyTable, this.historyTableIndex + 1);\r\n }\r\n }\r\n\r\n // Update the history pointer\r\n this.historyTableIndex++;\r\n\r\n // Add the new history state, if needed\r\n if (addNewHistoryState) {\r\n // Save the selection info\r\n const selection = AutoNumericHelper.getElementSelection(this.domElement);\r\n this.selectionStart = selection.start;\r\n this.selectionEnd = selection.end;\r\n\r\n // Then add the new raw value\r\n this.historyTable.push({\r\n // Save the rawValue and selection start/end\r\n value: this.rawValue,\r\n // The selection for this element is temporary, and will be updated when the next history state will be recorded.\r\n // That way, we are always sure we save the last caret or selection positions just before the value is changed. Otherwise we would only save those positions when the value is first changed, and would not take into account that the user could move the caret around afterward.\r\n // For instance, this is needed if the user change the element value, and immediately undo it ; if he then does a redo, he'll see the value and the right selection\r\n // To sum up; The selection position are not always +1 character, since it could also be '2' if a group separator is added when entering one character. That's why the current history state caret/selection position is updated on each `keyup` event.\r\n start: this.selectionStart + 1, // Here we add one since the user added one character too\r\n end: this.selectionEnd + 1\r\n });\r\n\r\n // Update the selection in the previous entry, in order to keep track of the updated caret/selection positions\r\n if (this.historyTable.length > 1) {\r\n this.historyTable[this.historyTableIndex - 1].start = this.selectionStart;\r\n this.historyTable[this.historyTableIndex - 1].end = this.selectionEnd;\r\n }\r\n }\r\n\r\n // Limit the history table size according to the `historySize` option\r\n if (this.historyTable.length > this.settings.historySize) {\r\n this._historyTableForget();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Debug function for the history table\r\n * @private\r\n */\r\n /*\r\n _debugHistoryTable() {\r\n let i = 0;\r\n let mark;\r\n this.historyTable.forEach(history => {\r\n if (this.historyTableIndex === i) {\r\n mark = '> ';\r\n } else {\r\n mark = '';\r\n }\r\n console.log(`${mark}${i++}: ${history.value} ${history.start}|${history.end} [onGoingRedo: ${this.onGoingRedo}]`); //DEBUG\r\n });\r\n }\r\n */\r\n\r\n /**\r\n * 'Undo' or 'Redo' the last/next user entry in the history table.\r\n * This does not modify the history table, only the pointer to the current state.\r\n *\r\n * @param {boolean} undo If set to `true`, then this function does an 'Undo', otherwise it does a 'Redo'\r\n * @private\r\n */\r\n _historyTableUndoOrRedo(undo = true) {\r\n let check;\r\n if (undo) {\r\n // Only 'undo' if there are some info to undo\r\n check = this.historyTableIndex > 0;\r\n if (check) {\r\n this.historyTableIndex--;\r\n }\r\n } else {\r\n // Only 'redo' if there are some info to redo at the end of the history table\r\n check = this.historyTableIndex + 1 < this.historyTable.length;\r\n if (check) {\r\n this.historyTableIndex++;\r\n }\r\n }\r\n\r\n if (check) {\r\n // Set the value back\r\n const undoInfo = this.historyTable[this.historyTableIndex];\r\n this.set(undoInfo.value, null, false); // next or previous raw value\r\n\r\n // Set the selection back\r\n AutoNumericHelper.setElementSelection(this.domElement, undoInfo.start, undoInfo.end);\r\n }\r\n }\r\n\r\n /**\r\n * 'Undo' the last user entry by going back one entry in the history table.\r\n * This keeps the following entries in order to allow for a 'redo'.\r\n * This does not modify the history table, only the pointer to the current state.\r\n * @private\r\n */\r\n _historyTableUndo() {\r\n this._historyTableUndoOrRedo(true);\r\n }\r\n\r\n /**\r\n * 'Redo' the next user entry in the history table.\r\n * This does not modify the history table, only the pointer to the current state.\r\n * @private\r\n */\r\n _historyTableRedo() {\r\n this._historyTableUndoOrRedo(false);\r\n }\r\n\r\n /**\r\n * Reset the history table to its initial state, and select the value.\r\n * @private\r\n */\r\n /*\r\n resetHistoryTable() { //FIXME Test this\r\n this.set(this.rawValue, null, false);\r\n this.select();\r\n const selection = AutoNumericHelper.getElementSelection(this.domElement);\r\n this.historyTableIndex = 0;\r\n this.historyTable = [{\r\n // Save the rawValue and selection start/end\r\n value: this.rawValue,\r\n start: selection.start,\r\n end : selection.end,\r\n }];\r\n }\r\n */\r\n\r\n /**\r\n * Make the history table forget its first N elements, shifting its indexes in the process.\r\n * `N` being given as the `numberOfEntriesToForget` parameter.\r\n *\r\n * @param {Number} numberOfEntriesToForget\r\n * @returns {object|Array<object>} The discarded objects, in an Array.\r\n * @private\r\n */\r\n _historyTableForget(numberOfEntriesToForget = 1) {\r\n const shiftedAway = [];\r\n for (let i = 0; i < numberOfEntriesToForget; i++) {\r\n shiftedAway.push(this.historyTable.shift());\r\n // Update the history table index accordingly\r\n this.historyTableIndex--;\r\n if (this.historyTableIndex < 0) {\r\n // In case this function is called more times than there is states in the history table\r\n this.historyTableIndex = 0;\r\n }\r\n }\r\n\r\n if (shiftedAway.length === 1) {\r\n return shiftedAway[0];\r\n }\r\n\r\n return shiftedAway;\r\n }\r\n\r\n /**\r\n * Return the currently used value from the history table.\r\n *\r\n * @returns {string|number}\r\n * @private\r\n */\r\n _historyTableCurrentValueUsed() {\r\n let indexToUse = this.historyTableIndex;\r\n if (indexToUse < 0) {\r\n indexToUse = 0;\r\n }\r\n\r\n let result;\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(this.historyTable[indexToUse])) {\r\n result = \"\";\r\n } else {\r\n result = this.historyTable[indexToUse].value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse the `styleRules` option and run the test for each given rules, either pre-defined ones like `positive`, `negative` and `ranges`, or user defined callbacks within the `userDefined` attribute.\r\n * @private\r\n */\r\n _parseStyleRules() {\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(this.settings.styleRules) || this.rawValue === \"\") {\r\n return;\r\n }\r\n\r\n // 'positive' attribute\r\n if (!AutoNumericHelper.isUndefinedOrNullOrEmpty(this.settings.styleRules.positive)) {\r\n if (this.rawValue >= 0) {\r\n this._addCSSClass(this.settings.styleRules.positive);\r\n } else {\r\n this._removeCSSClass(this.settings.styleRules.positive);\r\n }\r\n }\r\n\r\n // 'negative' attribute\r\n if (!AutoNumericHelper.isUndefinedOrNullOrEmpty(this.settings.styleRules.negative)) {\r\n if (this.rawValue < 0) {\r\n this._addCSSClass(this.settings.styleRules.negative);\r\n } else {\r\n this._removeCSSClass(this.settings.styleRules.negative);\r\n }\r\n }\r\n\r\n // 'ranges' attribute\r\n if (\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(this.settings.styleRules.ranges) &&\r\n this.settings.styleRules.ranges.length !== 0\r\n ) {\r\n this.settings.styleRules.ranges.forEach((range) => {\r\n if (this.rawValue >= range.min && this.rawValue < range.max) {\r\n this._addCSSClass(range.class);\r\n } else {\r\n this._removeCSSClass(range.class);\r\n }\r\n });\r\n }\r\n\r\n // 'userDefined' attribute\r\n //TODO Also pass the old raw value as a parameter, and not only the new raw value\r\n if (\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(this.settings.styleRules.userDefined) &&\r\n this.settings.styleRules.userDefined.length !== 0\r\n ) {\r\n this.settings.styleRules.userDefined.forEach((userObject) => {\r\n if (AutoNumericHelper.isFunction(userObject.callback)) {\r\n // Test for the type of the `classes` attribute, which changes the function behavior\r\n if (AutoNumericHelper.isString(userObject.classes)) {\r\n // If 'classes' is a string, set it if `true`, remove it if `false`\r\n if (userObject.callback(this.rawValue)) {\r\n this._addCSSClass(userObject.classes);\r\n } else {\r\n this._removeCSSClass(userObject.classes);\r\n }\r\n } else if (AutoNumericHelper.isArray(userObject.classes)) {\r\n if (userObject.classes.length === 2) {\r\n // If 'classes' is an array with only 2 elements, set the first class if `true`, the second if `false`\r\n if (userObject.callback(this.rawValue)) {\r\n this._addCSSClass(userObject.classes[0]);\r\n this._removeCSSClass(userObject.classes[1]);\r\n } else {\r\n this._removeCSSClass(userObject.classes[0]);\r\n this._addCSSClass(userObject.classes[1]);\r\n }\r\n } else if (userObject.classes.length > 2) {\r\n // The callback returns an array of indexes to use on the `classes` array\r\n const callbackResult = userObject.callback(this.rawValue);\r\n if (AutoNumericHelper.isArray(callbackResult)) {\r\n // If multiple indexes are returned\r\n userObject.classes.forEach((userClass, index) => {\r\n if (AutoNumericHelper.isInArray(index, callbackResult)) {\r\n this._addCSSClass(userClass);\r\n } else {\r\n this._removeCSSClass(userClass);\r\n }\r\n });\r\n } else if (AutoNumericHelper.isInt(callbackResult)) {\r\n // If only one index is returned\r\n userObject.classes.forEach((userClass, index) => {\r\n if (index === callbackResult) {\r\n this._addCSSClass(userClass);\r\n } else {\r\n this._removeCSSClass(userClass);\r\n }\r\n });\r\n } else if (AutoNumericHelper.isNull(callbackResult)) {\r\n // Remove all the classes\r\n userObject.classes.forEach((userClass) => {\r\n this._removeCSSClass(userClass);\r\n });\r\n } else {\r\n AutoNumericHelper.throwError(\r\n `The callback result is not an array nor a valid array index, ${typeof callbackResult} given.`\r\n );\r\n }\r\n } else {\r\n AutoNumericHelper.throwError(\"The classes attribute is not valid for the `styleRules` option.\");\r\n }\r\n } else if (AutoNumericHelper.isUndefinedOrNullOrEmpty(userObject.classes)) {\r\n // If 'classes' is `undefined` or `null`, then the callback is called with the AutoNumeric object passed as a parameter\r\n userObject.callback(this);\r\n } else {\r\n AutoNumericHelper.throwError(\"The callback/classes structure is not valid for the `styleRules` option.\");\r\n }\r\n } else {\r\n AutoNumericHelper.warning(\r\n `The given \\`styleRules\\` callback is not a function, ${typeof callback} given.`,\r\n this.settings.showWarnings\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add the given CSS class to the DOM element.\r\n *\r\n * @param {string} cssClassName\r\n * @private\r\n */\r\n _addCSSClass(cssClassName) {\r\n this.domElement.classList.add(cssClassName);\r\n }\r\n\r\n /**\r\n * Remove the given CSS class from the DOM element.\r\n *\r\n * @param {string} cssClassName\r\n * @private\r\n */\r\n _removeCSSClass(cssClassName) {\r\n this.domElement.classList.remove(cssClassName);\r\n }\r\n\r\n // This are the public function available on each autoNumeric-managed element\r\n\r\n /**\r\n * Method that updates the AutoNumeric settings, and immediately format the element accordingly.\r\n * The options passed as parameter(s) is either one or many objects that each contains some settings, ie. :\r\n * {\r\n * digitGroupSeparator: \".\",\r\n * decimalCharacter: \",\",\r\n * currencySymbol: '€ ',\r\n * }\r\n * If multiple options are passed, the latter overwrite the previous ones.\r\n *\r\n * Note: If the new settings are not validated, or the call to `set()` fails, then the previous valid settings are reverted back to.\r\n *\r\n * @example anElement.update({ options }) // Updates the settings\r\n * @example anElement.update({ options1 }, { options2 }) // Updates the settings with multiple option objects\r\n * @example anElement.update([{ options1 }, { options2 }]) // Updates the settings with multiple option objects in a single array\r\n *\r\n * @param {object|string|array} newOptions\r\n * @returns {AutoNumeric}\r\n */\r\n update(...newOptions) {\r\n if (Array.isArray(newOptions) && Array.isArray(newOptions[0])) {\r\n // Allows to pass a single array of options\r\n newOptions = newOptions[0];\r\n }\r\n\r\n // Keep a copy of the original settings before changing them, in case they do not validate correctly, so we can switch back to them\r\n const originalSettings = AutoNumericHelper.cloneObject(this.settings); //TODO Check that the `styleRules` option is correctly cloned (due to depth cloning limitation)\r\n\r\n // Store the current unformatted input value\r\n const numericString = this.rawValue;\r\n\r\n // Generate a single option object with the settings from the latter overwriting those from the former\r\n let optionsToUse = {};\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(newOptions) || newOptions.length === 0) {\r\n optionsToUse = null;\r\n } else if (newOptions.length >= 1) {\r\n newOptions.forEach((optionObject) => {\r\n if (this.constructor._isPreDefinedOptionValid(optionObject)) {\r\n // The option object is a predefined option name (ie. 'euro')\r\n optionObject = this.constructor._getOptionObject(optionObject);\r\n }\r\n\r\n Object.assign(optionsToUse, optionObject);\r\n });\r\n }\r\n\r\n // Update the settings\r\n try {\r\n this._setSettings(optionsToUse, true);\r\n this._setWritePermissions(); // Update the read/write permissions\r\n this._updateEventListeners();\r\n\r\n // Reformat the input value with the new settings\r\n // Note: we always `set`, even when `numericString` is the empty string '', since `emptyInputBehavior` (set to `always` or `zero`) can change how the empty input is formatted\r\n this.set(numericString);\r\n } catch (error) {\r\n // If the settings validation fails, then we switch back to the previous valid settings\r\n this._setSettings(originalSettings, true); // `_setSettings()` is used here instead of directly doing `this.settings = originalSettings;` since lots of side variables are calculated from the settings, and we need to get those back to their previous state. Note: `_setSettings()` is called in the 'update' mode in order to correctly set back the `originalDecimalPlacesRawValue` value.\r\n AutoNumericHelper.throwError(`Unable to update the settings, those are invalid: [${error}]`);\r\n\r\n return this;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return the options object containing all the current autoNumeric settings in effect.\r\n * You can then directly access each option by using its name : `anElement.getSettings().optionNameAutoCompleted`.\r\n *\r\n * @example\r\n * anElement.getSettings()\r\n * anElement.getSettings().decimalCharacter // Return the decimalCharacter setting as a string - any valid option name can be used\r\n *\r\n * @returns {object}\r\n */\r\n getSettings() {\r\n return this.settings;\r\n }\r\n\r\n /**\r\n * Set the given element value, and format it immediately.\r\n * Additionally, this `set()` method can accept options that will be merged into the current AutoNumeric element, taking precedence over any previous settings.\r\n *\r\n * @example anElement.set('12345.67') // Formats the value\r\n * @example anElement.set(12345.67) // Formats the value\r\n * @example anElement.set(12345.67, { decimalCharacter : ',' }) // Update the settings and formats the value in one go\r\n * @example anElement.northAmerican().set('$12,345.67') // Set an already formatted value (this does not _exactly_ respect the currency symbol/negative placements, but only remove all non-numbers characters, according to the ones given in the settings)\r\n * @example anElement.set(null) // Set the rawValue and element value to `null`\r\n *\r\n * @param {number|string|null} newValue The value must be a Number, a numeric string or `null` (if `emptyInputBehavior` is set to `'null'`)\r\n * @param {object} options A settings object that will override the current settings. Note: the update is done only if the `newValue` is defined.\r\n * @param {boolean} saveChangeToHistory If set to `true`, then the change is recorded in the history table\r\n * @returns {AutoNumeric}\r\n * @throws\r\n */\r\n set(newValue, options = null, saveChangeToHistory = true) {\r\n //TODO Add the `saveSettings` options. If `true`, then when `options` is passed, then it overwrite the current `this.settings`. If `false` the `options` are only used once and `this.settings` is not modified\r\n if (AutoNumericHelper.isUndefined(newValue)) {\r\n AutoNumericHelper.warning(\r\n `You are trying to set an 'undefined' value ; an error could have occurred.`,\r\n this.settings.showWarnings\r\n );\r\n return this;\r\n }\r\n\r\n // The options update is done only if the `newValue` is not `undefined`\r\n if (!AutoNumericHelper.isNull(options)) {\r\n this._setSettings(options, true); // We do not call `update` here since this would call `set` too\r\n }\r\n\r\n if (newValue === null && this.settings.emptyInputBehavior !== AutoNumeric.options.emptyInputBehavior.null) {\r\n AutoNumericHelper.warning(\r\n `You are trying to set the \\`null\\` value while the \\`emptyInputBehavior\\` option is set to ${this.settings.emptyInputBehavior}. If you want to be able to set the \\`null\\` value, you need to change the 'emptyInputBehavior' option to \\`'null'\\`.`,\r\n this.settings.showWarnings\r\n );\r\n return this;\r\n }\r\n\r\n let value;\r\n if (newValue === null) {\r\n //TODO Merge this into a global `if (newValue === null) {` test, with the test above\r\n // Here this.settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.null\r\n this._setElementAndRawValue(null, null, saveChangeToHistory);\r\n this._saveValueToPersistentStorage();\r\n\r\n return this;\r\n }\r\n\r\n value = this.constructor._toNumericValue(newValue, this.settings);\r\n if (isNaN(Number(value))) {\r\n //TODO Do not modify the element value if the newValue results in `NaN`. Make sure the settings, if modified, are revert back too.\r\n AutoNumericHelper.warning(\r\n `The value you are trying to set results in \\`NaN\\`. The element value is set to the empty string instead.`,\r\n this.settings.showWarnings\r\n );\r\n this.setValue(\"\", saveChangeToHistory);\r\n\r\n return this;\r\n }\r\n\r\n if (value === \"\") {\r\n switch (this.settings.emptyInputBehavior) {\r\n case AutoNumeric.options.emptyInputBehavior.zero:\r\n value = 0;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.min:\r\n value = this.settings.minimumValue;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.max:\r\n value = this.settings.maximumValue;\r\n break;\r\n default:\r\n if (AutoNumericHelper.isNumber(this.settings.emptyInputBehavior)) {\r\n value = Number(this.settings.emptyInputBehavior);\r\n }\r\n }\r\n }\r\n\r\n if (value !== \"\") {\r\n const [minTest, maxTest] = this.constructor._checkIfInRangeWithOverrideOption(value, this.settings);\r\n\r\n // Modify the formatted value if the rawValue is found in the `valuesToStrings` option\r\n if (minTest && maxTest && this.settings.valuesToStrings && this._checkValuesToStrings(value)) {\r\n // Set the raw value normally, and the formatted value with the corresponding string\r\n this._setElementAndRawValue(this.settings.valuesToStrings[value], value, saveChangeToHistory);\r\n this._saveValueToPersistentStorage();\r\n\r\n return this;\r\n }\r\n\r\n // This test is needed by the `showPositiveSign` option\r\n const isZero = AutoNumericHelper.isZeroOrHasNoValue(value);\r\n if (isZero) {\r\n value = \"0\";\r\n }\r\n\r\n if (minTest && maxTest) {\r\n let forcedRawValue = this.constructor._roundRawValue(value, this.settings);\r\n forcedRawValue = this._trimLeadingAndTrailingZeros(forcedRawValue.replace(this.settings.decimalCharacter, \".\")); // Move the `setRawValue` call after the `setElementValue` one\r\n value = this._getRawValueToFormat(value); // Multiply the raw value to obtain the formatted value\r\n\r\n // Round the given value according to the object state (focused/unfocused)\r\n if (this.isFocused) {\r\n value = this.constructor._roundFormattedValueShownOnFocus(value, this.settings);\r\n } else {\r\n if (this.settings.divisorWhenUnfocused) {\r\n value = value / this.settings.divisorWhenUnfocused;\r\n value = value.toString();\r\n }\r\n\r\n value = this.constructor._roundFormattedValueShownOnBlur(value, this.settings);\r\n }\r\n\r\n value = this.constructor._modifyNegativeSignAndDecimalCharacterForFormattedValue(value, this.settings);\r\n value = this.constructor._addGroupSeparators(\r\n value,\r\n this.settings,\r\n this.isFocused,\r\n this.rawValue,\r\n forcedRawValue\r\n );\r\n if (!this.isFocused && this.settings.symbolWhenUnfocused) {\r\n value = `${value}${this.settings.symbolWhenUnfocused}`;\r\n }\r\n\r\n if (this.settings.decimalPlacesShownOnFocus || this.settings.divisorWhenUnfocused) {\r\n this._saveValueToPersistentStorage();\r\n }\r\n\r\n this._setElementAndRawValue(value, forcedRawValue, saveChangeToHistory);\r\n\r\n // Special case when the user is allowed to enter invalid numbers outside of the min/max range\r\n this._setValidOrInvalidState(forcedRawValue);\r\n\r\n return this;\r\n } else {\r\n this._triggerRangeEvents(minTest, maxTest);\r\n AutoNumericHelper.throwError(\r\n `The value [${value}] being set falls outside of the minimumValue [${this.settings.minimumValue}] and maximumValue [${this.settings.maximumValue}] range set for this element`\r\n );\r\n\r\n this._removeValueFromPersistentStorage();\r\n this.setValue(\"\", saveChangeToHistory); //TODO Shouldn't we just drop that faulty newValue and keep the previous one? This is behind a `throwError()` call anyway..\r\n\r\n return this;\r\n }\r\n } else {\r\n // Here, `value` equal the empty string `''`\r\n let result;\r\n if (this.settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.always) {\r\n // Keep the currency symbol as per emptyInputBehavior\r\n result = this.settings.currencySymbol;\r\n } else {\r\n result = \"\";\r\n }\r\n\r\n this._setElementAndRawValue(result, \"\", saveChangeToHistory);\r\n\r\n return this;\r\n }\r\n }\r\n\r\n /**\r\n * Set the given value directly as the DOM element value, without formatting it beforehand.\r\n * You can also set the value and update the setting in one go (the value will again not be formatted immediately).\r\n *\r\n * @param {number|string} value\r\n * @param {object} options\r\n * @returns {AutoNumeric}\r\n * @throws\r\n */\r\n setUnformatted(value, options = null) {\r\n //TODO Should we use `AutoNumeric.unformat()` here and set the unformatted result in case `value` is formatted?\r\n if (value === null || AutoNumericHelper.isUndefined(value)) {\r\n return this;\r\n }\r\n\r\n // The options update is done only if the `value` is not null\r\n if (!AutoNumericHelper.isNull(options)) {\r\n this._setSettings(options, true); // We do not call `update` here since this would call `set` too\r\n }\r\n\r\n const strippedValue = this.constructor._removeBrackets(value, this.settings);\r\n const normalizedValue = this.constructor._stripAllNonNumberCharacters(\r\n strippedValue,\r\n this.settings,\r\n true,\r\n this.isFocused\r\n );\r\n if (!AutoNumericHelper.isNumber(normalizedValue)) {\r\n AutoNumericHelper.throwError(\r\n `The value is not a valid one, it's not a numeric string nor a recognized currency.`\r\n );\r\n }\r\n\r\n if (this.constructor._isWithinRangeWithOverrideOption(normalizedValue, this.settings)) {\r\n // If the `normalizedValue` is in the range\r\n this.setValue(value);\r\n } else {\r\n AutoNumericHelper.throwError(\r\n `The value is out of the range limits [${this.settings.minimumValue}, ${this.settings.maximumValue}].`\r\n );\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set the given value directly as the DOM element value, without formatting it beforehand, and without checking its validity.\r\n * This also updates the `rawValue` with the given `newValue`, without checking it too ; if it's not formatted like a number recognized by Javascript, this *will* likely make other AutoNumeric methods fail.\r\n *\r\n * @param {string|number|null} newValue The new value to set on the element\r\n * @param {boolean} saveChangeToHistory If set to `true`, then the change is recorded in the history array, otherwise it is not\r\n * @returns {AutoNumeric}\r\n */\r\n setValue(newValue, saveChangeToHistory = true) {\r\n this._setElementAndRawValue(newValue, saveChangeToHistory);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Save the raw value inside the AutoNumeric object.\r\n *\r\n * @param {number|string|null} rawValue The numeric value as understood by Javascript like a `Number`\r\n * @param {boolean} saveChangeToHistory If set to `true`, then the change is recorded in the history array, otherwise it is not\r\n * @private\r\n */\r\n _setRawValue(rawValue, saveChangeToHistory = true) {\r\n // Only set the raw value if the given value is different than the current one\r\n if (this.rawValue !== rawValue) {\r\n //TODO Manage the case where one value is a string while the other is a number?\r\n const oldRawValue = this.rawValue;\r\n // Update the raw value\r\n this.rawValue = rawValue; // By default, if the `rawValue` is changed programmatically\r\n\r\n if (\r\n !AutoNumericHelper.isNull(this.settings.rawValueDivisor) &&\r\n this.settings.rawValueDivisor !== 0 && // Only divide if the `rawValueDivisor` option is set\r\n rawValue !== \"\" &&\r\n rawValue !== null && // Do not modify the `rawValue` if it's an empty string or null\r\n this._isUserManuallyEditingTheValue()\r\n ) {\r\n // If the user is manually changing the element value\r\n this.rawValue /= this.settings.rawValueDivisor;\r\n }\r\n\r\n // Broadcast the `rawValueModified` event since the `rawValue` has been modified\r\n this._triggerEvent(AutoNumeric.events.rawValueModified, this.domElement, {\r\n oldRawValue,\r\n newRawValue: this.rawValue,\r\n isPristine: this.isPristine(true),\r\n error: null,\r\n aNElement: this\r\n });\r\n\r\n // Change the element style or use the relevant callbacks\r\n this._parseStyleRules();\r\n\r\n if (saveChangeToHistory) {\r\n // Save in the history the last known raw value and formatted result selection\r\n this._historyTableAdd();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set the given value on the DOM element, without affecting the `rawValue`.\r\n * This send an 'autoNumeric:formatted' event if the new value is different than the old one.\r\n *\r\n * @param {number|string} newElementValue\r\n * @param {boolean} sendFormattedEvent If set to `true`, then the `AutoNumeric.events.formatted` event is sent if the value has changed\r\n * @returns {AutoNumeric}\r\n * @private\r\n */\r\n _setElementValue(newElementValue, sendFormattedEvent = true) {\r\n //TODO Use an internal attribute to track the current value of the element `formattedValue` (like its counterpart `rawValue`). This would allow us to avoid calling `getElementValue` many times\r\n const oldElementValue = AutoNumericHelper.getElementValue(this.domElement);\r\n\r\n // Only update the value if it's different from the current one\r\n if (newElementValue !== oldElementValue) {\r\n this.internalModification = true;\r\n AutoNumericHelper.setElementValue(this.domElement, newElementValue);\r\n this.internalModification = false;\r\n\r\n if (sendFormattedEvent) {\r\n this._triggerEvent(AutoNumeric.events.formatted, this.domElement, {\r\n oldValue: oldElementValue,\r\n newValue: newElementValue,\r\n oldRawValue: this.rawValue,\r\n newRawValue: this.rawValue,\r\n isPristine: this.isPristine(false),\r\n error: null,\r\n aNElement: this\r\n });\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set the given value on the DOM element, and the raw value on `this.rawValue`, if both are given.\r\n * If only one value is given, then both the DOM element value and the raw value are set with that value.\r\n * The third argument `saveChangeToHistory` defines if the change should be recorded in the history array.\r\n * Note: if the second argument `rawValue` is a boolean, we consider that is really is the `saveChangeToHistory` argument.\r\n *\r\n * @param {number|string|null} newElementValue\r\n * @param {number|string|null|boolean} rawValue\r\n * @param {boolean} saveChangeToHistory\r\n * @returns {AutoNumeric}\r\n * @private\r\n */\r\n _setElementAndRawValue(newElementValue, rawValue = null, saveChangeToHistory = true) {\r\n if (AutoNumericHelper.isNull(rawValue)) {\r\n rawValue = newElementValue;\r\n } else if (AutoNumericHelper.isBoolean(rawValue)) {\r\n saveChangeToHistory = rawValue;\r\n rawValue = newElementValue;\r\n }\r\n\r\n //XXX The order here is important ; the value should first be set on the element, then and only then we should update the raw value\r\n // In the `set()` function, we make sure to call `_setRawValue` *after* `setElementValue` so that if `_setRawValue` calls a callback that modify the `rawValue`, then the new value is set correctly (after `setElementValue` briefly set its value first)\r\n this._setElementValue(newElementValue);\r\n this._setRawValue(rawValue, saveChangeToHistory);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return the multiplied raw value with the `rawValueDivisor`.\r\n * This is used to display different values between the raw and formatted values.\r\n *\r\n * @param {number|string|null} rawValue The numeric value as understood by Javascript like a `Number`\r\n * @returns {number|string|null}\r\n * @private\r\n */\r\n _getRawValueToFormat(rawValue) {\r\n let rawValueForTheElementValue;\r\n if (\r\n !AutoNumericHelper.isNull(this.settings.rawValueDivisor) &&\r\n this.settings.rawValueDivisor !== 0 && // Only multiply if the `rawValueDivisor` option is set\r\n rawValue !== \"\" &&\r\n rawValue !== null\r\n ) {\r\n // Do not modify the `rawValue` if it's an empty string or null\r\n // !this._isUserManuallyEditingTheValue()) { // If the user is NOT manually changing the element value, but that is done programmatically\r\n rawValueForTheElementValue = rawValue * this.settings.rawValueDivisor;\r\n } else {\r\n rawValueForTheElementValue = rawValue;\r\n }\r\n\r\n return rawValueForTheElementValue;\r\n }\r\n\r\n /**\r\n * Check if the given value has a corresponding key in the `valuesToStrings` option object.\r\n *\r\n * @param {number|string} value\r\n * @returns {boolean} Returns `true` if such a key is found.\r\n * @private\r\n */\r\n _checkValuesToStrings(value) {\r\n return this.constructor._checkValuesToStringsArray(value, this.valuesToStringsKeys);\r\n }\r\n\r\n /**\r\n * Check if the given value has a corresponding key in the `stringsArray` array.\r\n *\r\n * @param {number|string} key\r\n * @param {array} stringsArray Array where the `key` is checked against its keys\r\n * @returns {boolean} Returns `true` if such a key is found.\r\n * @private\r\n */\r\n static _checkValuesToStringsArray(key, stringsArray) {\r\n return AutoNumericHelper.isInArray(String(key), stringsArray);\r\n }\r\n\r\n /**\r\n * Static helper for checking if the given `key` is found in the settings' `valuesToStrings` option object.\r\n *\r\n * @param {number|string} key\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _checkValuesToStringsSettings(key, settings) {\r\n return this._checkValuesToStringsArray(key, Object.keys(settings.valuesToStrings));\r\n }\r\n\r\n /**\r\n * Static helper for checking if the given `value` is found in the settings' `valuesToStrings` option object.\r\n *\r\n * @param {number|string} value\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _checkStringsToValuesSettings(value, settings) {\r\n return this._checkValuesToStringsArray(value, Object.values(settings.valuesToStrings));\r\n }\r\n\r\n /**\r\n * Return `true` if the user is currently modifying the element value manually.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _isUserManuallyEditingTheValue() {\r\n // return (this.isFocused && this.isEditing) || this.isWheelEvent || this.isDropEvent;\r\n return (this.isFocused && this.isEditing) || this.isDropEvent;\r\n }\r\n\r\n /**\r\n * Execute the given callback function using the given result as its first parameter, and the AutoNumeric object as its second.\r\n *\r\n * @param {number|string|Array|null} result\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n * @private\r\n */\r\n _executeCallback(result, callback) {\r\n if (!AutoNumericHelper.isNull(callback) && AutoNumericHelper.isFunction(callback)) {\r\n callback(result, this);\r\n }\r\n }\r\n\r\n /**\r\n * Trigger the given event on the given element with the given detail.\r\n * This takes into account the `eventBubbles` and `eventIsCancelable` options.\r\n *\r\n * @param {string} eventName\r\n * @param {HTMLElement|HTMLDocument|EventTarget} element\r\n * @param {object} detail\r\n * @private\r\n */\r\n _triggerEvent(eventName, element = document, detail = null) {\r\n AutoNumericHelper.triggerEvent(\r\n eventName,\r\n element,\r\n detail,\r\n this.settings.eventBubbles,\r\n this.settings.eventIsCancelable\r\n );\r\n }\r\n\r\n /**\r\n * Alias of the `getNumericString()` function.\r\n * Developers should use one of the more explicit function names to get what they want :\r\n * - a numeric string : `getNumericString()`\r\n * - a formatted string : `getFormatted()`\r\n * - a number : `getNumber()`, or\r\n * - a localized numeric string : `getLocalized()`\r\n *\r\n * @usage anElement.get();\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n *\r\n * @deprecated\r\n * @returns {string|null}\r\n */\r\n get(callback = null) {\r\n return this.getNumericString(callback);\r\n }\r\n\r\n /**\r\n * Return the unformatted value as a string.\r\n * This can also return `null` if `rawValue` is null.\r\n *\r\n * @usage anElement.getNumericString();\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n *\r\n * @returns {string|null}\r\n */\r\n getNumericString(callback = null) {\r\n let result;\r\n if (AutoNumericHelper.isNull(this.rawValue)) {\r\n result = null;\r\n } else {\r\n // Always return a numeric string\r\n // The following statement gets rid of the trailing zeros in the decimal places since the current method does not pad decimals\r\n result = AutoNumericHelper.trimPaddedZerosFromDecimalPlaces(this.rawValue);\r\n }\r\n\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the current formatted value of the AutoNumeric element as a string\r\n *\r\n * @usage anElement.getFormatted()\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n *\r\n * @returns {string}\r\n */\r\n getFormatted(callback = null) {\r\n if (!(\"value\" in this.domElement || \"textContent\" in this.domElement)) {\r\n // Make sure `.value` or `.textContent' exists before trying to access those properties\r\n AutoNumericHelper.throwError(\"Unable to get the formatted string from the element.\");\r\n }\r\n\r\n const result = AutoNumericHelper.getElementValue(this.domElement);\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the element unformatted value as a real Javascript number.\r\n * Warning: This can lead to precision problems with big numbers that should be stored as strings.\r\n *\r\n * @usage anElement.getNumber()\r\n *\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n *\r\n * @returns {number|null}\r\n */\r\n getNumber(callback = null) {\r\n let result;\r\n if (this.rawValue === null) {\r\n result = null;\r\n } else {\r\n result = this.constructor._toLocale(this.getNumericString(), \"number\", this.settings);\r\n }\r\n\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns the unformatted value, but following the `outputFormat` setting, which means the output can either be :\r\n * - a string (that could or could not represent a number (ie. \"12345,67-\")), or\r\n * - a plain number (if the setting 'number' is used).\r\n *\r\n * By default the returned values are an ISO numeric string \"1234.56\" or \"-1234.56\" where the decimal character is a period.\r\n * Check the \"outputFormat\" option definition for more details.\r\n *\r\n * @usage anElement.getLocalized();\r\n *\r\n * @param {null|string|function} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @param {function|null} callback If a callback is passed, then the result is passed to it as its first argument, and the AutoNumeric object has its second\r\n *\r\n * @returns {*}\r\n */\r\n getLocalized(forcedOutputFormat = null, callback = null) {\r\n // First, check if only a callback has been passed, and if so, sanitize the parameters\r\n if (AutoNumericHelper.isFunction(forcedOutputFormat) && AutoNumericHelper.isNull(callback)) {\r\n callback = forcedOutputFormat;\r\n forcedOutputFormat = null;\r\n }\r\n\r\n // Then get the localized value\r\n let value;\r\n if (AutoNumericHelper.isEmptyString(this.rawValue)) {\r\n value = \"\";\r\n } else {\r\n // Here I use `this.rawValue` instead of `this.getNumericString()` since the current input value could be unformatted with a localization (ie. '1234567,89-').\r\n // I also convert the rawValue to a number, then back to a string in order to drop the decimal part if the rawValue is an integer.\r\n value = \"\" + Number(this.rawValue);\r\n }\r\n\r\n if (value !== \"\" && Number(value) === 0 && this.settings.leadingZero !== AutoNumeric.options.leadingZero.keep) {\r\n value = \"0\";\r\n }\r\n\r\n let outputFormatToUse;\r\n if (AutoNumericHelper.isNull(forcedOutputFormat)) {\r\n outputFormatToUse = this.settings.outputFormat;\r\n } else {\r\n outputFormatToUse = forcedOutputFormat;\r\n }\r\n\r\n const result = this.constructor._toLocale(value, outputFormatToUse, this.settings);\r\n this._executeCallback(result, callback);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Force the element to reformat its value again (just in case the formatting has been lost).\r\n * This can be used right after a form submission for instance (after a previous call to `unformat`).\r\n *\r\n * @example anElement.reformat()\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n reformat() {\r\n // `this.rawValue` is used instead of `this.domElement.value` because when the content is `unformatLocalized`, it can become a string that cannot be converted to a number easily\r\n this.set(this.rawValue);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove the formatting and keep only the raw unformatted value in the element (as a numericString)\r\n * Note: this is loosely based on the previous 'unSet()' function\r\n *\r\n * By default, values are returned as ISO numeric strings (ie. \"1234.56\" or \"-1234.56\"), where the decimal character is a period.\r\n * @example anElement.unformat()\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n unformat() {\r\n this._setElementValue(this.getNumericString());\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove the formatting and keep only the localized unformatted value in the element, with the option to override the default outputFormat if needed\r\n *\r\n * Locale formats are supported \"1234.56-\" or \"1234,56\" or \"-1234,56 or \"1234,56-\", or even plain numbers.\r\n * Take a look at the `outputFormat` option definition in the default settings for more details.\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {AutoNumeric}\r\n */\r\n unformatLocalized(forcedOutputFormat = null) {\r\n this._setElementValue(this.getLocalized(forcedOutputFormat));\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return `true` if the current value is the same as when the element got initialized.\r\n * Note: By default, this returns `true` if the raw unformatted value is still the same even if the formatted one has changed (due to a configuration update for instance).\r\n * In order to test if the formatted value is the same (which means neither the raw value nor the settings have been changed), then you must pass `false` as its argument.\r\n *\r\n * @param {boolean} checkOnlyRawValue If set to `true`, the pristine value is done on the raw unformatted value, not the formatted one. If set to `false`, this also checks that the formatted value hasn't changed.\r\n * @returns {boolean}\r\n */\r\n isPristine(checkOnlyRawValue = true) {\r\n let result;\r\n if (checkOnlyRawValue) {\r\n result = this.initialValue === this.getNumericString();\r\n } else {\r\n result = this.initialValueHtmlAttribute === this.getFormatted();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Select the formatted element content, based on the `selectNumberOnly` option\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n select() {\r\n if (this.settings.selectNumberOnly) {\r\n this.selectNumber();\r\n } else {\r\n this._defaultSelectAll();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Select the whole element content (including the currency symbol).\r\n * @private\r\n */\r\n _defaultSelectAll() {\r\n AutoNumericHelper.setElementSelection(\r\n this.domElement,\r\n 0,\r\n AutoNumericHelper.getElementValue(this.domElement).length\r\n );\r\n }\r\n\r\n /**\r\n * Select only the numbers in the formatted element content, leaving out the currency symbol, whatever the value of the `selectNumberOnly` option\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n selectNumber() {\r\n //TODO Make sure the selection is ok when showPositiveSign is set to `true` (select the negative sign, but not the positive one)\r\n const unformattedValue = AutoNumericHelper.getElementValue(this.domElement);\r\n const valueLen = unformattedValue.length;\r\n const currencySymbolSize = this.settings.currencySymbol.length;\r\n const currencySymbolPlacement = this.settings.currencySymbolPlacement;\r\n const negLen = !AutoNumericHelper.isNegative(unformattedValue, this.settings.negativeSignCharacter) ? 0 : 1;\r\n const suffixTextLen = this.settings.suffixText.length;\r\n\r\n let start;\r\n if (currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n start = 0;\r\n } else if (\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.left &&\r\n negLen === 1 &&\r\n currencySymbolSize > 0\r\n ) {\r\n start = currencySymbolSize + 1;\r\n } else {\r\n start = currencySymbolSize;\r\n }\r\n\r\n let end;\r\n if (currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix) {\r\n end = valueLen - suffixTextLen;\r\n } else {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.left:\r\n end = valueLen - (suffixTextLen + currencySymbolSize);\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.right:\r\n if (currencySymbolSize > 0) {\r\n end = valueLen - (currencySymbolSize + negLen + suffixTextLen);\r\n } else {\r\n end = valueLen - (currencySymbolSize + suffixTextLen);\r\n }\r\n break;\r\n default:\r\n end = valueLen - (currencySymbolSize + suffixTextLen);\r\n }\r\n }\r\n\r\n AutoNumericHelper.setElementSelection(this.domElement, start, end);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Select only the integer part in the formatted element content, whatever the value of `selectNumberOnly`\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n selectInteger() {\r\n let start = 0;\r\n const isPositive = this.rawValue >= 0;\r\n\r\n // Negative or positive sign, if any\r\n if (\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix ||\r\n (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix &&\r\n (this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.prefix ||\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.none))\r\n ) {\r\n if (\r\n (this.settings.showPositiveSign && isPositive) || // This only exclude the positive sign from being selected\r\n (!isPositive &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.left)\r\n ) {\r\n // And this exclude the negative sign from being selected in this special case : '-€ 1.234,57suffixText'\r\n start = start + 1;\r\n }\r\n }\r\n\r\n // Currency symbol\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix) {\r\n start = start + this.settings.currencySymbol.length;\r\n }\r\n\r\n // Calculate the selection end position\r\n const elementValue = AutoNumericHelper.getElementValue(this.domElement);\r\n let end = elementValue.indexOf(this.settings.decimalCharacter);\r\n if (end === -1) {\r\n // No decimal character found\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n end = elementValue.length - this.settings.currencySymbol.length;\r\n } else {\r\n end = elementValue.length;\r\n }\r\n\r\n // Trailing negative sign\r\n if (\r\n !isPositive &&\r\n (this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.suffix ||\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix)\r\n ) {\r\n end = end - 1;\r\n }\r\n\r\n // Avoid selecting the suffix test\r\n end = end - this.settings.suffixText.length;\r\n }\r\n\r\n AutoNumericHelper.setElementSelection(this.domElement, start, end);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Select only the decimal part in the formatted element content, whatever the value of `selectNumberOnly`\r\n * Multiple cases are possible :\r\n * +1.234,57suffixText\r\n *\r\n * € +1.234,57suffixText\r\n * +€ 1.234,57suffixText\r\n * € 1.234,57+suffixText\r\n *\r\n * 1.234,57+ €suffixText\r\n * 1.234,57 €+suffixText\r\n * +1.234,57 €suffixText\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n selectDecimal() {\r\n let start = AutoNumericHelper.getElementValue(this.domElement).indexOf(this.settings.decimalCharacter);\r\n let end;\r\n\r\n if (start === -1) {\r\n // The decimal character has not been found, we deselect all\r\n start = 0;\r\n end = 0;\r\n } else {\r\n // A decimal character has been found\r\n start = start + 1; // We add 1 to exclude the decimal character from the selection\r\n\r\n let decimalCount;\r\n if (this.isFocused) {\r\n decimalCount = this.settings.decimalPlacesShownOnFocus;\r\n } else {\r\n decimalCount = this.settings.decimalPlacesShownOnBlur;\r\n }\r\n\r\n end = start + Number(decimalCount);\r\n }\r\n\r\n AutoNumericHelper.setElementSelection(this.domElement, start, end);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Return the DOM element reference of the autoNumeric-managed element\r\n *\r\n * @returns {HTMLElement|HTMLInputElement}\r\n */\r\n node() {\r\n return this.domElement;\r\n }\r\n\r\n /**\r\n * Return the DOM element reference of the parent node of the autoNumeric-managed element\r\n *\r\n * @returns {HTMLElement|HTMLInputElement|Node}\r\n */\r\n parent() {\r\n return this.domElement.parentNode;\r\n }\r\n\r\n /**\r\n * Detach the current AutoNumeric element from the shared local 'init' list.\r\n * This means any changes made on that local shared list will not be transmitted to that element anymore.\r\n * Note : The user can provide another AutoNumeric element, and detach this one instead of the current one.\r\n *\r\n * @param {AutoNumeric} otherAnElement\r\n * @returns {AutoNumeric}\r\n */\r\n detach(otherAnElement = null) {\r\n //FIXME test this\r\n let domElementToDetach;\r\n if (!AutoNumericHelper.isNull(otherAnElement)) {\r\n domElementToDetach = otherAnElement.node();\r\n } else {\r\n domElementToDetach = this.domElement;\r\n }\r\n\r\n this._removeFromLocalList(domElementToDetach); //FIXME What happens if the selected dom element does not exist in the list?\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Attach the given AutoNumeric element to the shared local 'init' list.\r\n * When doing that, by default the DOM content is left untouched.\r\n * The user can force a reformat with the new shared list options by passing a second argument to `true`.\r\n *\r\n * @param {AutoNumeric} otherAnElement\r\n * @param {boolean} reFormat\r\n * @returns {AutoNumeric}\r\n */\r\n attach(otherAnElement, reFormat = true) {\r\n //FIXME test this\r\n this._addToLocalList(otherAnElement.node()); //FIXME Should we make sure the element is not already in the list?\r\n if (reFormat) {\r\n otherAnElement.update(this.settings);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Format and return the given value, or set the formatted value into the given DOM element if one is passed as an argument.\r\n * By default, this use the current element settings.\r\n * The user can override any option of its choosing by passing an option object.\r\n *\r\n * @param {number|HTMLElement|HTMLInputElement} valueOrElement\r\n * @param {null|object} optionOverride\r\n * @returns {string|null}\r\n */\r\n formatOther(valueOrElement, optionOverride = null) {\r\n //FIXME test this\r\n return this._formatOrUnformatOther(true, valueOrElement, optionOverride);\r\n }\r\n\r\n /**\r\n * Unformat and return the raw numeric string corresponding to the given value, or directly set the unformatted value into the given DOM element if one is passed as an argument.\r\n * By default, this use the current element settings.\r\n * The user can override any option of its choosing by passing an option object.\r\n\r\n * @param {string|HTMLElement|HTMLInputElement} stringOrElement\r\n * @param {null|object} optionOverride\r\n * @returns {string|null}\r\n */\r\n unformatOther(stringOrElement, optionOverride = null) {\r\n //FIXME test this\r\n return this._formatOrUnformatOther(false, stringOrElement, optionOverride);\r\n }\r\n\r\n /**\r\n * Method that either format or unformat the value of another element.\r\n *\r\n * - Format and return the given value, or set the formatted value into the given DOM element if one is passed as an argument.\r\n * - Unformat and return the raw numeric string corresponding to the given value, or directly set the unformatted value into the given DOM element if one is passed as an argument.\r\n *\r\n * By default, this use the current element settings.\r\n * The user can override any option of its choosing by passing an option object.\r\n *\r\n * @param {boolean} isFormatting If set to `true`, then the method formats, otherwise if set to `false`, it unformats\r\n * @param {number|string|HTMLElement|HTMLInputElement} valueOrStringOrElement\r\n * @param {null|object} optionOverride\r\n * @returns {string|null}\r\n * @private\r\n */\r\n _formatOrUnformatOther(isFormatting, valueOrStringOrElement, optionOverride = null) {\r\n //FIXME test this\r\n // If the user wants to override the current element settings temporarily\r\n let settingsToUse;\r\n if (!AutoNumericHelper.isNull(optionOverride)) {\r\n settingsToUse = this._cloneAndMergeSettings(optionOverride);\r\n } else {\r\n settingsToUse = this.settings;\r\n }\r\n\r\n // Then the unformatting is done...\r\n let result;\r\n if (AutoNumericHelper.isElement(valueOrStringOrElement)) {\r\n // ...either directly on the DOM element value\r\n const elementValue = AutoNumericHelper.getElementValue(valueOrStringOrElement);\r\n if (isFormatting) {\r\n result = AutoNumeric.format(elementValue, settingsToUse);\r\n } else {\r\n result = AutoNumeric.unformat(elementValue, settingsToUse);\r\n }\r\n\r\n AutoNumericHelper.setElementValue(valueOrStringOrElement, result); //TODO Use `unformatAndSet` and `formatAndSet`instead\r\n\r\n return null;\r\n }\r\n\r\n // ...or on the given value\r\n if (isFormatting) {\r\n result = AutoNumeric.format(valueOrStringOrElement, settingsToUse);\r\n } else {\r\n result = AutoNumeric.unformat(valueOrStringOrElement, settingsToUse);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Use the current AutoNumeric element settings to initialize the DOM element(s) given as a parameter.\r\n * Doing so will *link* the AutoNumeric elements together since they will share the same local AutoNumeric element list.\r\n * (cf. prototype pattern : https://en.wikipedia.org/wiki/Prototype_pattern)\r\n *\r\n * You can `init` either a single DOM element (in that case an AutoNumeric object will be returned), or an array of DOM elements or a string that will be used as a CSS selector. In the latter cases, an array of AutoNumeric objects will then be returned (or an empty array if nothing gets selected by the CSS selector).\r\n *\r\n * Use case : Once you have an AutoNumeric element already setup correctly with the right options, you can use it as many times you want to initialize as many other DOM elements as needed.\r\n * Note : this works only on elements that can be managed by autoNumeric.\r\n *\r\n * @param {HTMLElement|HTMLInputElement|Array<HTMLElement|HTMLInputElement>|string} domElementOrArrayOrString\r\n * @param {boolean} attached If set to `false`, then the newly generated AutoNumeric element will not share the same local element list\r\n * @returns {AutoNumeric|[AutoNumeric]}\r\n */\r\n init(domElementOrArrayOrString, attached = true) {\r\n let returnASingleAutoNumericObject = false; // By default, this function returns an array of AutoNumeric objects\r\n let domElementsArray = [];\r\n if (AutoNumericHelper.isString(domElementOrArrayOrString)) {\r\n domElementsArray = [...document.querySelectorAll(domElementOrArrayOrString)]; // Convert a NodeList to an Array\r\n } else if (AutoNumericHelper.isElement(domElementOrArrayOrString)) {\r\n domElementsArray.push(domElementOrArrayOrString);\r\n returnASingleAutoNumericObject = true; // Special case when only one DOM element is passed as a parameter\r\n } else if (AutoNumericHelper.isArray(domElementOrArrayOrString)) {\r\n domElementsArray = domElementOrArrayOrString;\r\n } else {\r\n AutoNumericHelper.throwError(`The given parameters to the 'init' function are invalid.`);\r\n }\r\n\r\n if (domElementsArray.length === 0) {\r\n AutoNumericHelper.warning(\r\n `No valid DOM elements were given hence no AutoNumeric object were instantiated.`,\r\n true\r\n );\r\n\r\n return [];\r\n }\r\n\r\n const currentLocalList = this._getLocalList();\r\n const autoNumericObjectsArray = [];\r\n\r\n // Instantiate (and link depending on `attached`) each AutoNumeric objects\r\n domElementsArray.forEach((domElement) => {\r\n // Initialize the new AutoNumeric element\r\n const originalCreateLocalListSetting = this.settings.createLocalList;\r\n if (attached) {\r\n // Temporary variable to know if we should create the local list during the initialization (since we'll remove it afterwards)\r\n this.settings.createLocalList = false;\r\n }\r\n\r\n const newAutoNumericElement = new AutoNumeric(\r\n domElement,\r\n AutoNumericHelper.getElementValue(domElement),\r\n this.settings\r\n );\r\n\r\n // Set the common shared local list if needed\r\n // If the user wants to create a detached new AutoNumeric element, then skip the following step that bind the two elements together by default\r\n if (attached) {\r\n // 1) Set the local list reference to point to the initializer's one\r\n newAutoNumericElement._setLocalList(currentLocalList);\r\n\r\n // 2) Add the new element to that existing list\r\n this._addToLocalList(domElement, newAutoNumericElement); // Here we use the *new* AutoNumeric object reference to add to the local list, since we'll need the reference to `this` in the methods to points to that new AutoNumeric object.\r\n this.settings.createLocalList = originalCreateLocalListSetting;\r\n }\r\n\r\n autoNumericObjectsArray.push(newAutoNumericElement);\r\n });\r\n\r\n if (returnASingleAutoNumericObject) {\r\n // If a single DOM element was used as the parameter, then we return an AutoNumeric object directly\r\n return autoNumericObjectsArray[0];\r\n }\r\n\r\n // ...otherwise we return an Array of AutoNumeric objects\r\n return autoNumericObjectsArray;\r\n }\r\n\r\n /**\r\n * Reset the element value either to the empty string '', or the currency sign, depending on the `emptyInputBehavior` option value.\r\n * If you set the `forceClearAll` argument to `true`, then the `emptyInputBehavior` option is overridden and the whole input is clear, including any currency sign.\r\n *\r\n * @param {boolean} forceClearAll\r\n * @returns {AutoNumeric}\r\n */\r\n clear(forceClearAll = false) {\r\n if (forceClearAll) {\r\n const temporaryForcedOptions = {\r\n emptyInputBehavior: AutoNumeric.options.emptyInputBehavior.focus\r\n };\r\n this.set(\"\", temporaryForcedOptions);\r\n } else {\r\n this.set(\"\");\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove the autoNumeric data and event listeners from the element, but keep the element content intact.\r\n * This also clears the value from sessionStorage (or cookie, depending on browser supports).\r\n * Note: this does not remove the formatting.\r\n *\r\n * @example anElement.remove()\r\n */\r\n remove() {\r\n this._removeValueFromPersistentStorage();\r\n this._removeEventListeners();\r\n this._removeWatcher();\r\n\r\n // Also remove the element from the local AutoNumeric list\r\n this._removeFromLocalList(this.domElement);\r\n // Also remove the element from the global AutoNumeric list\r\n this.constructor._removeFromGlobalList(this);\r\n }\r\n\r\n /**\r\n * Remove the autoNumeric data and event listeners from the element, and reset its value to the empty string ''.\r\n * This also clears the value from sessionStorage (or cookie, depending on browser supports).\r\n *\r\n * @example anElement.wipe()\r\n */\r\n wipe() {\r\n this._setElementValue(\"\", false); // Do not send the 'AutoNumeric.events.formatted' event when wiping an AutoNumeric object\r\n this.remove();\r\n }\r\n\r\n /**\r\n * Remove the autoNumeric data and event listeners from the element, and delete the DOM element altogether\r\n */\r\n nuke() {\r\n this.remove();\r\n // Remove the element from the DOM\r\n this.domElement.parentNode.removeChild(this.domElement);\r\n }\r\n\r\n // Special functions that really work on the parent <form> element, instead of the <input> element itself\r\n\r\n /**\r\n * Return a reference to the parent <form> element if it exists, otherwise return `null`.\r\n * If the parent form element as already been found, this directly return a reference to it.\r\n * However, you can force AutoNumeric to search again for its reference by passing `true` as a parameter to this method.\r\n * This method updates the `this.parentForm` attribute.\r\n *\r\n * In either case, whenever a new parent form is set for the current AutoNumeric element, we make sure to update the anCount and anFormHandler attributes on both the old form and the new one (for instance in case the user moved the input elements with `appendChild()` since AutoNumeric cannot not detect that).\r\n *\r\n * @param {boolean} forceSearch If set to `true`, the parent form is searched again, even if `this.parentForm` is already set.\r\n *\r\n * @returns {HTMLFormElement|null}\r\n */\r\n form(forceSearch = false) {\r\n if (forceSearch || AutoNumericHelper.isUndefinedOrNullOrEmpty(this.parentForm)) {\r\n const newParentForm = this._getParentForm();\r\n if (!AutoNumericHelper.isNull(newParentForm) && newParentForm !== this.parentForm) {\r\n // If the current parent form exists and is different from the previous parent form\r\n\r\n // Search for all the AutoNumeric elements in the old parent form\r\n const oldANChildren = this._getFormAutoNumericChildren(this.parentForm);\r\n // Update the anCount with the correct number of AutoNumeric elements\r\n this.parentForm.dataset.anCount = oldANChildren.length;\r\n\r\n // Check if the new parent form already has a anFormHandler name\r\n if (this._hasFormHandlerFunction(newParentForm)) {\r\n this._incrementParentFormCounter(newParentForm); // Increment its counter\r\n } else {\r\n // Create one and set the anCount to 1\r\n this._storeFormHandlerFunction(newParentForm);\r\n this._initializeFormCounterToOne(newParentForm);\r\n }\r\n }\r\n\r\n this.parentForm = newParentForm;\r\n }\r\n\r\n return this.parentForm;\r\n }\r\n\r\n /**\r\n * Return an array of the AutoNumeric-managed elements for the given form element is passed, otherwise for the current `this.parentForm` element.\r\n *\r\n * @param {HTMLFormElement|null} formElement\r\n *\r\n * @returns {Array.<HTMLInputElement>}\r\n * @private\r\n */\r\n _getFormAutoNumericChildren(formElement) {\r\n // Search for all the child AutoNumeric elements in that parent form\r\n //TODO This only search for <input> elements, not contenteditable non-input tag ones, for now. Add a parameter to allow this function to search on every tags.\r\n const inputList = [...formElement.querySelectorAll(\"input\")];\r\n\r\n return inputList.filter((input) => this.constructor.isManagedByAutoNumeric(input));\r\n }\r\n\r\n /**\r\n * Return a reference to the parent <form> element if it exists, otherwise return `null`.\r\n *\r\n * @returns {HTMLFormElement|null}\r\n * @private\r\n */\r\n _getParentForm() {\r\n if (this.domElement.tagName.toLowerCase() === \"body\") {\r\n return null;\r\n }\r\n\r\n let node = this.domElement;\r\n let tagName;\r\n do {\r\n node = node.parentNode;\r\n if (AutoNumericHelper.isNull(node)) {\r\n // Special case when using templates with frameworks like Vue.js, where the input element can be 'detached' when initializing the DOM structure\r\n return null;\r\n }\r\n\r\n if (node.tagName) {\r\n tagName = node.tagName.toLowerCase();\r\n } else {\r\n tagName = \"\";\r\n }\r\n\r\n if (tagName === \"body\") {\r\n // Get out of the loop if we get up to the `<body>` element\r\n break;\r\n }\r\n } while (tagName !== \"form\");\r\n\r\n if (tagName === \"form\") {\r\n return node;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Return a string in standard URL-encoded notation with the form input values being unformatted.\r\n * This string can be used as a query for instance.\r\n *\r\n * @returns {string}\r\n */\r\n formNumericString() {\r\n return this.constructor._serializeNumericString(this.form(), this.settings.serializeSpaces);\r\n }\r\n\r\n /**\r\n * Return a string in standard URL-encoded notation with the form input values being formatted.\r\n *\r\n * @returns {string}\r\n */\r\n formFormatted() {\r\n return this.constructor._serializeFormatted(this.form(), this.settings.serializeSpaces);\r\n }\r\n\r\n /**\r\n * Return a string in standard URL-encoded notation with the form input values, with localized values.\r\n * The default output format can be overridden by passing the option as a parameter.\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {string}\r\n */\r\n formLocalized(forcedOutputFormat = null) {\r\n let outputFormatToUse;\r\n if (AutoNumericHelper.isNull(forcedOutputFormat)) {\r\n outputFormatToUse = this.settings.outputFormat;\r\n } else {\r\n outputFormatToUse = forcedOutputFormat;\r\n }\r\n\r\n return this.constructor._serializeLocalized(this.form(), this.settings.serializeSpaces, outputFormatToUse);\r\n }\r\n\r\n /**\r\n * Return an array containing an object for each form <input> element.\r\n * Those objects are of the following structure `{ name: foo, value: '42' }`, where the `name` is the DOM element name, and the `value` is an unformatted numeric string.\r\n *\r\n * @returns {Array}\r\n */\r\n formArrayNumericString() {\r\n return this.constructor._serializeNumericStringArray(this.form(), this.settings.serializeSpaces);\r\n }\r\n\r\n /**\r\n * Return an array containing an object for each form <input> element.\r\n * Those objects are of the following structure `{ name: foo, value: '42' }`, where the `name` is the DOM element name, and the `value` is the formatted string.\r\n *\r\n * @returns {Array}\r\n */\r\n formArrayFormatted() {\r\n return this.constructor._serializeFormattedArray(this.form(), this.settings.serializeSpaces);\r\n }\r\n\r\n /**\r\n * Return an array containing an object for each form <input> element.\r\n * Those objects are of the following structure `{ name: foo, value: '42' }`, where the `name` is the DOM element name, and the `value` is the localized numeric string.\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {Array}\r\n */\r\n formArrayLocalized(forcedOutputFormat = null) {\r\n let outputFormatToUse;\r\n if (AutoNumericHelper.isNull(forcedOutputFormat)) {\r\n outputFormatToUse = this.settings.outputFormat;\r\n } else {\r\n outputFormatToUse = forcedOutputFormat;\r\n }\r\n\r\n return this.constructor._serializeLocalizedArray(this.form(), this.settings.serializeSpaces, outputFormatToUse);\r\n }\r\n\r\n /**\r\n * Return a JSON string containing an object representing the form input values.\r\n * This is based on the result of the `formArrayNumericString()` function.\r\n *\r\n * @returns {string}\r\n */\r\n formJsonNumericString() {\r\n return JSON.stringify(this.formArrayNumericString());\r\n }\r\n\r\n /**\r\n * Return a JSON string containing an object representing the form input values.\r\n * This is based on the result of the `formArrayFormatted()` function.\r\n *\r\n * @returns {string}\r\n */\r\n formJsonFormatted() {\r\n return JSON.stringify(this.formArrayFormatted());\r\n }\r\n\r\n /**\r\n * Return a JSON string containing an object representing the form input values.\r\n * This is based on the result of the `formArrayLocalized()` function.\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {string}\r\n */\r\n formJsonLocalized(forcedOutputFormat = null) {\r\n return JSON.stringify(this.formArrayLocalized(forcedOutputFormat));\r\n }\r\n\r\n /**\r\n * Unformat all the autoNumeric-managed elements that are a child of the parent <form> element of this DOM element, to numeric strings\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n formUnformat() {\r\n //FIXME test this\r\n const inputs = this.constructor._getChildANInputElement(this.form());\r\n inputs.forEach((input) => {\r\n AutoNumeric.getAutoNumericElement(input).unformat();\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unformat all the autoNumeric-managed elements that are a child of the parent <form> element of this DOM element, to localized strings\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n formUnformatLocalized() {\r\n //FIXME test this\r\n const inputs = this.constructor._getChildANInputElement(this.form());\r\n inputs.forEach((input) => {\r\n AutoNumeric.getAutoNumericElement(input).unformatLocalized();\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Reformat all the autoNumeric-managed elements that are a child of the parent <form> element of this DOM element\r\n *\r\n * @returns {AutoNumeric}\r\n */\r\n formReformat() {\r\n //FIXME test this\r\n const inputs = this.constructor._getChildANInputElement(this.form());\r\n inputs.forEach((input) => {\r\n AutoNumeric.getAutoNumericElement(input).reformat();\r\n });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Convert the input values to numeric strings, submit the form, then reformat those back.\r\n * The function can either take a callback, or not. If it doesn't, the default `form.submit()` function will be called.\r\n * Otherwise, it runs `callback(value)` with `value` being equal to the result of `formNumericString()`.\r\n *\r\n * @param {function|null} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitNumericString(callback = null) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isNull(callback)) {\r\n this.formUnformat();\r\n this.form().submit();\r\n this.formReformat();\r\n } else if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formNumericString());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Submit the form with the current formatted values.\r\n * The function can either take a callback, or not. If it doesn't, the default `form.submit()` function will be called.\r\n * Otherwise, it runs `callback(value)` with `value` being equal to the result of `formFormatted()`.\r\n *\r\n * @param {function|null} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitFormatted(callback = null) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isNull(callback)) {\r\n this.form().submit();\r\n } else if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formFormatted());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Convert the input values to localized strings, submit the form, then reformat those back.\r\n * The function can either take a callback, or not. If it doesn't, the default `form.submit()` function will be called.\r\n * Otherwise, it runs `callback(value)` with `value` being equal to the result of `formLocalized()`.\r\n *\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @param {function|null} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitLocalized(forcedOutputFormat = null, callback = null) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isNull(callback)) {\r\n this.formUnformatLocalized();\r\n this.form().submit();\r\n this.formReformat();\r\n } else if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formLocalized(forcedOutputFormat));\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate an array of numeric strings from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formArrayNumericString()`.\r\n *\r\n * @param {function} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitArrayNumericString(callback) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formArrayNumericString());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate an array of the current formatted values from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formArrayFormatted()`.\r\n *\r\n * @param {function} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitArrayFormatted(callback) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formArrayFormatted());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate an array of localized strings from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formArrayLocalized()`.\r\n *\r\n * @param {function} callback\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitArrayLocalized(callback, forcedOutputFormat = null) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formArrayLocalized(forcedOutputFormat));\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate a JSON string with the numeric strings values from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formJsonNumericString()`.\r\n *\r\n * @param {function} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitJsonNumericString(callback) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formJsonNumericString());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate a JSON string with the current formatted values from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formJsonFormatted()`.\r\n *\r\n * @param {function} callback\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitJsonFormatted(callback) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formJsonFormatted());\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Generate a JSON string with the localized strings values from the `<input>` elements, and pass it to the given callback.\r\n * Under the hood, the array is generated via a call to `formJsonLocalized()`.\r\n *\r\n * @param {function} callback\r\n * @param {null|string} forcedOutputFormat If set to something different than `null`, then this is used as an overriding outputFormat option\r\n * @returns {AutoNumeric}\r\n */\r\n formSubmitJsonLocalized(callback, forcedOutputFormat = null) {\r\n //FIXME test this\r\n if (AutoNumericHelper.isFunction(callback)) {\r\n callback(this.formJsonLocalized(forcedOutputFormat));\r\n } else {\r\n AutoNumericHelper.throwError(`The given callback is not a function.`);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unformat the given AutoNumeric element, and update the `hoveredWithAlt` variable.\r\n *\r\n * @param {AutoNumeric} anElement\r\n * @private\r\n */\r\n static _unformatAltHovered(anElement) {\r\n anElement.hoveredWithAlt = true;\r\n anElement.unformat();\r\n }\r\n\r\n /**\r\n * Reformat the given AutoNumeric element, and update the `hoveredWithAlt` variable.\r\n *\r\n * @param {AutoNumeric} anElement\r\n * @private\r\n */\r\n static _reformatAltHovered(anElement) {\r\n anElement.hoveredWithAlt = false;\r\n anElement.reformat();\r\n }\r\n\r\n /**\r\n * Return an array of autoNumeric elements, child of the <form> element passed as a parameter.\r\n *\r\n * @param {HTMLElement} formNode\r\n * @returns {Array}\r\n * @private\r\n */\r\n static _getChildANInputElement(formNode) {\r\n //FIXME test this\r\n const inputList = formNode.getElementsByTagName(\"input\");\r\n\r\n // Loop this list and keep only the inputs that are managed by AutoNumeric\r\n const autoNumericInputs = [];\r\n const inputElements = Array.prototype.slice.call(inputList, 0);\r\n inputElements.forEach((input) => {\r\n if (this.test(input)) {\r\n autoNumericInputs.push(input);\r\n }\r\n });\r\n\r\n return autoNumericInputs;\r\n }\r\n\r\n // Static methods\r\n /**\r\n * Test if the given DOM element, or the element selected by the given selector string is already managed by AutoNumeric (if it has been initialized on the current page).\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector Accepts either directly a DOM element to test, or a string selector (that will return one and only one element, if any)\r\n * @returns {boolean}\r\n */\r\n static test(domElementOrSelector) {\r\n return this._isInGlobalList(AutoNumericHelper.domElement(domElementOrSelector));\r\n }\r\n\r\n /**\r\n * Create a WeakMap with the given name.\r\n *\r\n * @param {string} weakMapName\r\n * @private\r\n */\r\n static _createWeakMap(weakMapName) {\r\n window[weakMapName] = new WeakMap();\r\n }\r\n\r\n /**\r\n * Create a list of all the AutoNumeric elements that are initialized on the current page.\r\n * This is needed in order to determine if a given dom element is already managed by autoNumeric.\r\n * This uses a WeakMap in order to limit potential garbage collection problems.\r\n * (cf. my tests on http://codepen.io/AnotherLinuxUser/pen/pRQGaM?editors=1011)\r\n * @private\r\n */\r\n static _createGlobalList() {\r\n // The check that this global list does not exists already is done in the add and remove functions already\r\n this.autoNumericGlobalListName = \"autoNumericGlobalList\"; //XXX This looks weird to set a variable on `this.` in a static method, but that really declare that variable like a static property\r\n // Note: I should not get any memory leaks for referencing the DOM element in the `value`, this DOM element also being the `key`, according to the spec : http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects\r\n this._createWeakMap(this.autoNumericGlobalListName);\r\n }\r\n\r\n /**\r\n * Return `true` if the global AutoNumeric element list exists.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _doesGlobalListExists() {\r\n const type = typeof window[this.autoNumericGlobalListName];\r\n return type !== \"undefined\" && type === \"object\";\r\n }\r\n\r\n /**\r\n * Add the given object to the global AutoNumeric element list.\r\n *\r\n * @param {AutoNumeric} autoNumericObject\r\n * @private\r\n */\r\n static _addToGlobalList(autoNumericObject) {\r\n if (!this._doesGlobalListExists()) {\r\n this._createGlobalList();\r\n }\r\n\r\n const domElement = autoNumericObject.node();\r\n // This checks if the object is not already in the global list before adding it.\r\n // This could happen if an AutoNumeric element is initialized, then the DOM element is removed directly via `removeChild` (hence the reference does not get removed from the global list), then it get recreated and initialized again\r\n if (this._isInGlobalList(domElement)) {\r\n if (this._getFromGlobalList(domElement) === this) {\r\n // Do not add this AutoNumeric object again since it's already in that global list\r\n return;\r\n } else {\r\n // Print a warning to warn that the domElement already has a reference in the global map (but we cannot for sure starts deleting those old references since they could still be used by another AutoNumeric object)\r\n AutoNumericHelper.warning(\r\n `A reference to the DOM element you just initialized already exists in the global AutoNumeric element list. Please make sure to not initialize the same DOM element multiple times.`,\r\n autoNumericObject.getSettings().showWarnings\r\n );\r\n }\r\n }\r\n\r\n window[this.autoNumericGlobalListName].set(domElement, autoNumericObject);\r\n }\r\n\r\n /**\r\n * Remove the given object from the global AutoNumeric element list.\r\n *\r\n * @param {AutoNumeric} autoNumericObject\r\n * @private\r\n */\r\n static _removeFromGlobalList(autoNumericObject) {\r\n //FIXME test this\r\n if (this._doesGlobalListExists()) {\r\n window[this.autoNumericGlobalListName].delete(autoNumericObject.node());\r\n }\r\n }\r\n\r\n /**\r\n * Return the value associated to the key `domElement` passed as a parameter.\r\n * The value is the AutoNumeric object that manages the DOM element `domElement`.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @returns {null|AutoNumeric}\r\n * @private\r\n */\r\n static _getFromGlobalList(domElement) {\r\n //FIXME test this\r\n if (this._doesGlobalListExists()) {\r\n return window[this.autoNumericGlobalListName].get(domElement);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Check if the given DOM element is in the global AutoNumeric element list.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isInGlobalList(domElement) {\r\n //FIXME test this\r\n if (!this._doesGlobalListExists()) {\r\n return false;\r\n }\r\n\r\n return window[this.autoNumericGlobalListName].has(domElement);\r\n }\r\n\r\n /**\r\n * Create a `Map` that will stores all the autoNumeric elements that are initialized from this current element.\r\n * @private\r\n */\r\n _createLocalList() {\r\n this.autoNumericLocalList = new Map();\r\n this._addToLocalList(this.domElement);\r\n }\r\n\r\n /**\r\n * In some rare cases, you could want to delete the local list generated during the element initialization (in order to use another one instead for instance).\r\n * @private\r\n */\r\n _deleteLocalList() {\r\n delete this.autoNumericLocalList;\r\n }\r\n\r\n /**\r\n * Set the local list with the given Map object.\r\n *\r\n * @param {Map} localList\r\n * @private\r\n */\r\n _setLocalList(localList) {\r\n this.autoNumericLocalList = localList;\r\n }\r\n\r\n /**\r\n * Return the local list Map object.\r\n *\r\n * @returns {*|Map}\r\n * @private\r\n */\r\n _getLocalList() {\r\n return this.autoNumericLocalList;\r\n }\r\n\r\n /**\r\n * Return `true` if the AutoNumeric object has a local list defined already and has at least one element in it (itself usually).\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _hasLocalList() {\r\n return this.autoNumericLocalList instanceof Map && this.autoNumericLocalList.size !== 0;\r\n }\r\n\r\n /**\r\n * Add the given object to the local autoNumeric element list.\r\n * Note: in order to keep a coherent list, we only add DOM elements in it, not the autoNumeric object.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @param {AutoNumeric} autoNumericObject A reference to the AutoNumeric object that manage the given DOM element\r\n * @throws\r\n * @private\r\n */\r\n _addToLocalList(domElement, autoNumericObject = null) {\r\n if (AutoNumericHelper.isNull(autoNumericObject)) {\r\n autoNumericObject = this;\r\n }\r\n\r\n if (!AutoNumericHelper.isUndefined(this.autoNumericLocalList)) {\r\n this.autoNumericLocalList.set(domElement, autoNumericObject); // Use the DOM element as key, and the AutoNumeric object as the value\r\n } else {\r\n AutoNumericHelper.throwError(\r\n `The local list provided does not exists when trying to add an element. [${this.autoNumericLocalList}] given.`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Remove the given object from the local autoNumeric element list.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @private\r\n */\r\n _removeFromLocalList(domElement) {\r\n if (!AutoNumericHelper.isUndefined(this.autoNumericLocalList)) {\r\n this.autoNumericLocalList.delete(domElement);\r\n } else if (this.settings.createLocalList) {\r\n AutoNumericHelper.throwError(\r\n `The local list provided does not exists when trying to remove an element. [${this.autoNumericLocalList}] given.`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Merge the `newSettings` given as parameters into the current element settings.\r\n *\r\n * WARNING: Using `Object.assign()` here means the merge is not recursive and only one depth is merged.\r\n * cf. http://stackoverflow.com/a/39188108/2834898\r\n * cf. tests on http://codepen.io/AnotherLinuxUser/pen/KaJORq?editors=0011\r\n *\r\n * @param {object} newSettings\r\n * @private\r\n */\r\n _mergeSettings(...newSettings) {\r\n Object.assign(this.settings, ...newSettings);\r\n }\r\n\r\n /**\r\n * Return a new object with the current element settings merged with the new settings.\r\n *\r\n * @param {object} newSettings\r\n * @returns {object}\r\n * @private\r\n */\r\n _cloneAndMergeSettings(...newSettings) {\r\n const result = {};\r\n Object.assign(result, this.settings, ...newSettings);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Validate the given option object.\r\n * If the options are valid, this function returns nothing, otherwise if the options are invalid, this function throws an error.\r\n *\r\n * This tests if the options are not conflicting and are well formatted.\r\n * This function is lenient since it only tests the settings properties ; it ignores any other properties the options object could have.\r\n *\r\n * @param {*} userOptions\r\n * @param {Boolean} shouldExtendDefaultOptions If `true`, then this function will extends the `userOptions` passed by the user, with the default options.\r\n * @param {object|null} originalOptions The user can pass the original options (and not the one that are generated from the default settings and the various usability corrections), in order to add compatibility and conflicts checks.\r\n * @throws Error This throws if the `userOptions` are not valid\r\n */\r\n static validate(userOptions, shouldExtendDefaultOptions = true, originalOptions = null) {\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(userOptions) || !AutoNumericHelper.isObject(userOptions)) {\r\n AutoNumericHelper.throwError(\r\n `The userOptions are invalid ; it should be a valid object, [${userOptions}] given.`\r\n );\r\n }\r\n\r\n const isOriginalOptionAnObject = AutoNumericHelper.isObject(originalOptions);\r\n if (!isOriginalOptionAnObject && !AutoNumericHelper.isNull(originalOptions)) {\r\n AutoNumericHelper.throwError(\r\n `The 'originalOptions' parameter is invalid ; it should either be a valid option object or \\`null\\`, [${userOptions}] given.`\r\n );\r\n }\r\n\r\n // If the user used old options, we convert them to new ones\r\n if (!AutoNumericHelper.isNull(userOptions)) {\r\n this._convertOldOptionsToNewOnes(userOptions);\r\n }\r\n\r\n // The user can choose if the `userOptions` has already been extended with the default options, or not\r\n let options;\r\n if (shouldExtendDefaultOptions) {\r\n options = Object.assign({}, this.getDefaultConfig(), userOptions);\r\n } else {\r\n options = userOptions;\r\n }\r\n\r\n // First things first, we test that the `showWarnings` option is valid\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.showWarnings) &&\r\n !AutoNumericHelper.isBoolean(options.showWarnings)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The debug option 'showWarnings' is invalid ; it should be either 'true' or 'false', [${options.showWarnings}] given.`\r\n );\r\n }\r\n\r\n // Define the regular expressions needed for the following tests\r\n const testPositiveInteger = /^[0-9]+$/;\r\n const testNumericalCharacters = /[0-9]+/;\r\n // const testFloatAndPossibleNegativeSign = /^-?[0-9]+(\\.?[0-9]+)$/;\r\n const testFloatOrIntegerAndPossibleNegativeSign = /^-?[0-9]+(\\.?[0-9]+)?$/;\r\n const testPositiveFloatOrInteger = /^[0-9]+(\\.?[0-9]+)?$/;\r\n\r\n // Then tests the options individually\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.allowDecimalPadding) &&\r\n !AutoNumericHelper.isBoolean(options.allowDecimalPadding) &&\r\n options.allowDecimalPadding !== AutoNumeric.options.allowDecimalPadding.floats\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The decimal padding option 'allowDecimalPadding' is invalid ; it should either be \\`false\\`, \\`true\\` or \\`'floats'\\`, [${options.allowDecimalPadding}] given.`\r\n );\r\n }\r\n\r\n if (\r\n (options.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.never ||\r\n options.allowDecimalPadding === \"false\") &&\r\n (options.decimalPlaces !== AutoNumeric.options.decimalPlaces.none ||\r\n options.decimalPlacesShownOnBlur !== AutoNumeric.options.decimalPlacesShownOnBlur.none ||\r\n options.decimalPlacesShownOnFocus !== AutoNumeric.options.decimalPlacesShownOnFocus.none)\r\n ) {\r\n AutoNumericHelper.warning(\r\n `Setting 'allowDecimalPadding' to [${options.allowDecimalPadding}] will override the current 'decimalPlaces*' settings [${options.decimalPlaces}, ${options.decimalPlacesShownOnBlur} and ${options.decimalPlacesShownOnFocus}].`,\r\n options.showWarnings\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.alwaysAllowDecimalCharacter) &&\r\n !AutoNumericHelper.isBoolean(options.alwaysAllowDecimalCharacter)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The option 'alwaysAllowDecimalCharacter' is invalid ; it should either be \\`true\\` or \\`false\\`, [${options.alwaysAllowDecimalCharacter}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.caretPositionOnFocus) &&\r\n !AutoNumericHelper.isInArray(options.caretPositionOnFocus, [\r\n AutoNumeric.options.caretPositionOnFocus.start,\r\n AutoNumeric.options.caretPositionOnFocus.end,\r\n AutoNumeric.options.caretPositionOnFocus.decimalLeft,\r\n AutoNumeric.options.caretPositionOnFocus.decimalRight\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The display on empty string option 'caretPositionOnFocus' is invalid ; it should either be \\`null\\`, 'focus', 'press', 'always' or 'zero', [${options.caretPositionOnFocus}] given.`\r\n );\r\n }\r\n\r\n // Special case here for `caretPositionOnFocus` and `selectOnFocus` where we need to check the original non-tempered version of the options in order to check for conflicts, since using the default settings remove those and would prevent us warning the user that his option object is not correct.\r\n let optionsToUse;\r\n if (isOriginalOptionAnObject) {\r\n optionsToUse = originalOptions;\r\n } else {\r\n optionsToUse = this._correctCaretPositionOnFocusAndSelectOnFocusOptions(userOptions);\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(optionsToUse) &&\r\n optionsToUse.caretPositionOnFocus !== AutoNumeric.options.caretPositionOnFocus.doNoForceCaretPosition &&\r\n optionsToUse.selectOnFocus === AutoNumeric.options.selectOnFocus.select\r\n ) {\r\n AutoNumericHelper.warning(\r\n `The 'selectOnFocus' option is set to 'select', which is in conflict with the 'caretPositionOnFocus' which is set to '${optionsToUse.caretPositionOnFocus}'. As a result, if this has been called when instantiating an AutoNumeric object, the 'selectOnFocus' option is forced to 'doNotSelect'.`,\r\n options.showWarnings\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.digitGroupSeparator, [\r\n AutoNumeric.options.digitGroupSeparator.comma,\r\n AutoNumeric.options.digitGroupSeparator.dot,\r\n AutoNumeric.options.digitGroupSeparator.normalSpace,\r\n AutoNumeric.options.digitGroupSeparator.thinSpace,\r\n AutoNumeric.options.digitGroupSeparator.narrowNoBreakSpace,\r\n AutoNumeric.options.digitGroupSeparator.noBreakSpace,\r\n AutoNumeric.options.digitGroupSeparator.noSeparator,\r\n AutoNumeric.options.digitGroupSeparator.apostrophe,\r\n AutoNumeric.options.digitGroupSeparator.arabicThousandsSeparator,\r\n AutoNumeric.options.digitGroupSeparator.dotAbove,\r\n AutoNumeric.options.digitGroupSeparator.privateUseTwo\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The thousand separator character option 'digitGroupSeparator' is invalid ; it should be ',', '.', 'Ù¬', 'Ë™', \"'\", '\\u0092', ' ', '\\u2009', '\\u202f', '\\u00a0' or empty (''), [${options.digitGroupSeparator}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.showOnlyNumbersOnFocus) &&\r\n !AutoNumericHelper.isBoolean(options.showOnlyNumbersOnFocus)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The 'showOnlyNumbersOnFocus' option is invalid ; it should be either 'true' or 'false', [${options.showOnlyNumbersOnFocus}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.digitalGroupSpacing, [\r\n AutoNumeric.options.digitalGroupSpacing.two,\r\n AutoNumeric.options.digitalGroupSpacing.twoScaled,\r\n AutoNumeric.options.digitalGroupSpacing.three,\r\n AutoNumeric.options.digitalGroupSpacing.four\r\n ]) &&\r\n !(options.digitalGroupSpacing >= 2 && options.digitalGroupSpacing <= 4)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The grouping separator option for thousands 'digitalGroupSpacing' is invalid ; it should be '2', '2s', '3', or '4', [${options.digitalGroupSpacing}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.decimalCharacter, [\r\n AutoNumeric.options.decimalCharacter.comma,\r\n AutoNumeric.options.decimalCharacter.dot,\r\n AutoNumeric.options.decimalCharacter.middleDot,\r\n AutoNumeric.options.decimalCharacter.arabicDecimalSeparator,\r\n AutoNumeric.options.decimalCharacter.decimalSeparatorKeySymbol\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The decimal separator character option 'decimalCharacter' is invalid ; it should be '.', ',', '·', '⎖' or 'Ù«', [${options.decimalCharacter}] given.`\r\n );\r\n }\r\n\r\n // Checks if the decimal and thousand characters are the same\r\n if (options.decimalCharacter === options.digitGroupSeparator) {\r\n AutoNumericHelper.throwError(\r\n `autoNumeric will not function properly when the decimal character 'decimalCharacter' [${options.decimalCharacter}] and the thousand separator 'digitGroupSeparator' [${options.digitGroupSeparator}] are the same character.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.decimalCharacterAlternative) &&\r\n !AutoNumericHelper.isString(options.decimalCharacterAlternative)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The alternate decimal separator character option 'decimalCharacterAlternative' is invalid ; it should be a string, [${options.decimalCharacterAlternative}] given.`\r\n );\r\n }\r\n\r\n if (options.currencySymbol !== \"\" && !AutoNumericHelper.isString(options.currencySymbol)) {\r\n AutoNumericHelper.throwError(\r\n `The currency symbol option 'currencySymbol' is invalid ; it should be a string, [${options.currencySymbol}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.currencySymbolPlacement, [\r\n AutoNumeric.options.currencySymbolPlacement.prefix,\r\n AutoNumeric.options.currencySymbolPlacement.suffix\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The placement of the currency sign option 'currencySymbolPlacement' is invalid ; it should either be 'p' (prefix) or 's' (suffix), [${options.currencySymbolPlacement}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.negativePositiveSignPlacement, [\r\n AutoNumeric.options.negativePositiveSignPlacement.prefix,\r\n AutoNumeric.options.negativePositiveSignPlacement.suffix,\r\n AutoNumeric.options.negativePositiveSignPlacement.left,\r\n AutoNumeric.options.negativePositiveSignPlacement.right,\r\n AutoNumeric.options.negativePositiveSignPlacement.none\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The placement of the negative sign option 'negativePositiveSignPlacement' is invalid ; it should either be 'p' (prefix), 's' (suffix), 'l' (left), 'r' (right) or 'null', [${options.negativePositiveSignPlacement}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.showPositiveSign) &&\r\n !AutoNumericHelper.isBoolean(options.showPositiveSign)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The show positive sign option 'showPositiveSign' is invalid ; it should be either 'true' or 'false', [${options.showPositiveSign}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isString(options.suffixText) ||\r\n (options.suffixText !== \"\" &&\r\n (AutoNumericHelper.isNegative(options.suffixText, options.negativeSignCharacter) ||\r\n testNumericalCharacters.test(options.suffixText)))\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The additional suffix option 'suffixText' is invalid ; it should not contains the negative sign '${options.negativeSignCharacter}' nor any numerical characters, [${options.suffixText}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isString(options.negativeSignCharacter) ||\r\n options.negativeSignCharacter.length !== 1 ||\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(options.negativeSignCharacter) ||\r\n testNumericalCharacters.test(options.negativeSignCharacter)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The negative sign character option 'negativeSignCharacter' is invalid ; it should be a single character, and cannot be any numerical characters, [${options.negativeSignCharacter}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isString(options.positiveSignCharacter) ||\r\n options.positiveSignCharacter.length !== 1 ||\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(options.positiveSignCharacter) ||\r\n testNumericalCharacters.test(options.positiveSignCharacter)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The positive sign character option 'positiveSignCharacter' is invalid ; it should be a single character, and cannot be any numerical characters, [${options.positiveSignCharacter}] given.\\nIf you want to hide the positive sign character, you need to set the \\`showPositiveSign\\` option to \\`true\\`.`\r\n );\r\n }\r\n\r\n if (options.negativeSignCharacter === options.positiveSignCharacter) {\r\n AutoNumericHelper.throwError(\r\n `The positive 'positiveSignCharacter' and negative 'negativeSignCharacter' sign characters cannot be identical ; [${options.negativeSignCharacter}] given.`\r\n );\r\n }\r\n\r\n const [leftBracket, rightBracket] = AutoNumericHelper.isNull(options.negativeBracketsTypeOnBlur)\r\n ? [\"\", \"\"]\r\n : options.negativeBracketsTypeOnBlur.split(\",\");\r\n if (\r\n AutoNumericHelper.contains(options.digitGroupSeparator, options.negativeSignCharacter) ||\r\n AutoNumericHelper.contains(options.decimalCharacter, options.negativeSignCharacter) ||\r\n AutoNumericHelper.contains(options.decimalCharacterAlternative, options.negativeSignCharacter) ||\r\n AutoNumericHelper.contains(leftBracket, options.negativeSignCharacter) ||\r\n AutoNumericHelper.contains(rightBracket, options.negativeSignCharacter) ||\r\n AutoNumericHelper.contains(options.suffixText, options.negativeSignCharacter)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The negative sign character option 'negativeSignCharacter' is invalid ; it should not be equal or a part of the digit separator, the decimal character, the decimal character alternative, the negative brackets or the suffix text, [${options.negativeSignCharacter}] given.`\r\n );\r\n }\r\n\r\n if (\r\n AutoNumericHelper.contains(options.digitGroupSeparator, options.positiveSignCharacter) ||\r\n AutoNumericHelper.contains(options.decimalCharacter, options.positiveSignCharacter) ||\r\n AutoNumericHelper.contains(options.decimalCharacterAlternative, options.positiveSignCharacter) ||\r\n AutoNumericHelper.contains(leftBracket, options.positiveSignCharacter) ||\r\n AutoNumericHelper.contains(rightBracket, options.positiveSignCharacter) ||\r\n AutoNumericHelper.contains(options.suffixText, options.positiveSignCharacter)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The positive sign character option 'positiveSignCharacter' is invalid ; it should not be equal or a part of the digit separator, the decimal character, the decimal character alternative, the negative brackets or the suffix text, [${options.positiveSignCharacter}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.overrideMinMaxLimits) &&\r\n !AutoNumericHelper.isInArray(options.overrideMinMaxLimits, [\r\n AutoNumeric.options.overrideMinMaxLimits.ceiling,\r\n AutoNumeric.options.overrideMinMaxLimits.floor,\r\n AutoNumeric.options.overrideMinMaxLimits.ignore,\r\n AutoNumeric.options.overrideMinMaxLimits.invalid\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The override min & max limits option 'overrideMinMaxLimits' is invalid ; it should either be 'ceiling', 'floor', 'ignore' or 'invalid', [${options.overrideMinMaxLimits}] given.`\r\n );\r\n }\r\n\r\n if (\r\n options.overrideMinMaxLimits !== AutoNumeric.options.overrideMinMaxLimits.invalid &&\r\n options.overrideMinMaxLimits !== AutoNumeric.options.overrideMinMaxLimits.ignore &&\r\n (options.minimumValue > 0 || options.maximumValue < 0)\r\n ) {\r\n AutoNumericHelper.warning(\r\n `You've set a \\`minimumValue\\` or a \\`maximumValue\\` excluding the value \\`0\\`. AutoNumeric will force the users to always have a valid value in the input, hence preventing them to clear the field. If you want to allow for temporary invalid values (ie. out-of-range), you should use the 'invalid' option for the 'overrideMinMaxLimits' setting.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isString(options.maximumValue) ||\r\n !testFloatOrIntegerAndPossibleNegativeSign.test(options.maximumValue)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The maximum possible value option 'maximumValue' is invalid ; it should be a string that represents a positive or negative number, [${options.maximumValue}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isString(options.minimumValue) ||\r\n !testFloatOrIntegerAndPossibleNegativeSign.test(options.minimumValue)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The minimum possible value option 'minimumValue' is invalid ; it should be a string that represents a positive or negative number, [${options.minimumValue}] given.`\r\n );\r\n }\r\n\r\n if (parseFloat(options.minimumValue) > parseFloat(options.maximumValue)) {\r\n AutoNumericHelper.throwError(\r\n `The minimum possible value option is greater than the maximum possible value option ; 'minimumValue' [${options.minimumValue}] should be smaller than 'maximumValue' [${options.maximumValue}].`\r\n );\r\n }\r\n\r\n if (\r\n !(\r\n (AutoNumericHelper.isInt(options.decimalPlaces) && options.decimalPlaces >= 0) || // If integer option\r\n (AutoNumericHelper.isString(options.decimalPlaces) && testPositiveInteger.test(options.decimalPlaces))\r\n ) // If string option\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The number of decimal places option 'decimalPlaces' is invalid ; it should be a positive integer, [${options.decimalPlaces}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !(\r\n AutoNumericHelper.isNull(options.decimalPlacesRawValue) ||\r\n (AutoNumericHelper.isInt(options.decimalPlacesRawValue) && options.decimalPlacesRawValue >= 0) || // If integer option\r\n (AutoNumericHelper.isString(options.decimalPlacesRawValue) &&\r\n testPositiveInteger.test(options.decimalPlacesRawValue))\r\n ) // If string option\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The number of decimal places for the raw value option 'decimalPlacesRawValue' is invalid ; it should be a positive integer or \\`null\\`, [${options.decimalPlacesRawValue}] given.`\r\n );\r\n }\r\n\r\n // Checks if the number of decimal places for the raw value is lower than the `decimalPlaces`, `decimalPlacesShownOnFocus` and/or `decimalPlacesShownOnBlur` options\r\n this._validateDecimalPlacesRawValue(options);\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.decimalPlacesShownOnFocus) &&\r\n !testPositiveInteger.test(String(options.decimalPlacesShownOnFocus))\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The number of expanded decimal places option 'decimalPlacesShownOnFocus' is invalid ; it should be a positive integer or \\`null\\`, [${options.decimalPlacesShownOnFocus}] given.`\r\n );\r\n }\r\n\r\n // Checks if the extended decimal places \"decimalPlacesShownOnFocus\" is greater than the decimal places number `decimalPlaces`\r\n if (\r\n !AutoNumericHelper.isNull(options.decimalPlacesShownOnFocus) &&\r\n Number(options.decimalPlaces) > Number(options.decimalPlacesShownOnFocus)\r\n ) {\r\n AutoNumericHelper.warning(\r\n `The extended decimal places 'decimalPlacesShownOnFocus' [${options.decimalPlacesShownOnFocus}] should be greater than the 'decimalPlaces' [${options.decimalPlaces}] value. Currently, this will limit the ability of your user to manually change some of the decimal places. Do you really want to do that?`,\r\n options.showWarnings\r\n );\r\n }\r\n\r\n if (\r\n (!AutoNumericHelper.isNull(options.divisorWhenUnfocused) &&\r\n !testPositiveFloatOrInteger.test(options.divisorWhenUnfocused)) ||\r\n options.divisorWhenUnfocused === 0 ||\r\n options.divisorWhenUnfocused === \"0\" ||\r\n options.divisorWhenUnfocused === 1 ||\r\n options.divisorWhenUnfocused === \"1\"\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The divisor option 'divisorWhenUnfocused' is invalid ; it should be a positive number higher than one, preferably an integer, [${options.divisorWhenUnfocused}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.decimalPlacesShownOnBlur) &&\r\n !testPositiveInteger.test(options.decimalPlacesShownOnBlur)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The number of decimals shown when unfocused option 'decimalPlacesShownOnBlur' is invalid ; it should be a positive integer or \\`null\\`, [${options.decimalPlacesShownOnBlur}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.symbolWhenUnfocused) &&\r\n !AutoNumericHelper.isString(options.symbolWhenUnfocused)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The symbol to show when unfocused option 'symbolWhenUnfocused' is invalid ; it should be a string, [${options.symbolWhenUnfocused}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.saveValueToSessionStorage) &&\r\n !AutoNumericHelper.isBoolean(options.saveValueToSessionStorage)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The save to session storage option 'saveValueToSessionStorage' is invalid ; it should be either 'true' or 'false', [${options.saveValueToSessionStorage}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.onInvalidPaste, [\r\n AutoNumeric.options.onInvalidPaste.error,\r\n AutoNumeric.options.onInvalidPaste.ignore,\r\n AutoNumeric.options.onInvalidPaste.clamp,\r\n AutoNumeric.options.onInvalidPaste.truncate,\r\n AutoNumeric.options.onInvalidPaste.replace\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The paste behavior option 'onInvalidPaste' is invalid ; it should either be 'error', 'ignore', 'clamp', 'truncate' or 'replace' (cf. documentation), [${options.onInvalidPaste}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.roundingMethod, [\r\n AutoNumeric.options.roundingMethod.halfUpSymmetric,\r\n AutoNumeric.options.roundingMethod.halfUpAsymmetric,\r\n AutoNumeric.options.roundingMethod.halfDownSymmetric,\r\n AutoNumeric.options.roundingMethod.halfDownAsymmetric,\r\n AutoNumeric.options.roundingMethod.halfEvenBankersRounding,\r\n AutoNumeric.options.roundingMethod.upRoundAwayFromZero,\r\n AutoNumeric.options.roundingMethod.downRoundTowardZero,\r\n AutoNumeric.options.roundingMethod.toCeilingTowardPositiveInfinity,\r\n AutoNumeric.options.roundingMethod.toFloorTowardNegativeInfinity,\r\n AutoNumeric.options.roundingMethod.toNearest05,\r\n AutoNumeric.options.roundingMethod.toNearest05Alt,\r\n AutoNumeric.options.roundingMethod.upToNext05,\r\n AutoNumeric.options.roundingMethod.downToNext05\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The rounding method option 'roundingMethod' is invalid ; it should either be 'S', 'A', 's', 'a', 'B', 'U', 'D', 'C', 'F', 'N05', 'CHF', 'U05' or 'D05' (cf. documentation), [${options.roundingMethod}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.negativeBracketsTypeOnBlur) &&\r\n !AutoNumericHelper.isInArray(options.negativeBracketsTypeOnBlur, [\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.parentheses,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.brackets,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.chevrons,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.curlyBraces,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.angleBrackets,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.japaneseQuotationMarks,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.halfBrackets,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.whiteSquareBrackets,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.quotationMarks,\r\n AutoNumeric.options.negativeBracketsTypeOnBlur.guillemets\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The brackets for negative values option 'negativeBracketsTypeOnBlur' is invalid ; it should either be '(,)', '[,]', '<,>', '{,}', '〈,〉', 'ï½¢,ï½£', '⸤,⸥', '⟦,⟧', '‹,›' or '«,»', [${options.negativeBracketsTypeOnBlur}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !(\r\n AutoNumericHelper.isString(options.emptyInputBehavior) || AutoNumericHelper.isNumber(options.emptyInputBehavior)\r\n ) ||\r\n !(\r\n AutoNumericHelper.isInArray(options.emptyInputBehavior, [\r\n AutoNumeric.options.emptyInputBehavior.focus,\r\n AutoNumeric.options.emptyInputBehavior.press,\r\n AutoNumeric.options.emptyInputBehavior.always,\r\n AutoNumeric.options.emptyInputBehavior.min,\r\n AutoNumeric.options.emptyInputBehavior.max,\r\n AutoNumeric.options.emptyInputBehavior.zero,\r\n AutoNumeric.options.emptyInputBehavior.null\r\n ]) || testFloatOrIntegerAndPossibleNegativeSign.test(options.emptyInputBehavior)\r\n )\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The display on empty string option 'emptyInputBehavior' is invalid ; it should either be 'focus', 'press', 'always', 'min', 'max', 'zero', 'null', a number, or a string that represents a number, [${options.emptyInputBehavior}] given.`\r\n );\r\n }\r\n\r\n if (\r\n options.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.zero &&\r\n (options.minimumValue > 0 || options.maximumValue < 0)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The 'emptyInputBehavior' option is set to 'zero', but this value is outside of the range defined by 'minimumValue' and 'maximumValue' [${options.minimumValue}, ${options.maximumValue}].`\r\n );\r\n }\r\n\r\n if (testFloatOrIntegerAndPossibleNegativeSign.test(String(options.emptyInputBehavior))) {\r\n if (!this._isWithinRangeWithOverrideOption(options.emptyInputBehavior, options)) {\r\n AutoNumericHelper.throwError(\r\n `The 'emptyInputBehavior' option is set to a number or a string that represents a number, but its value [${options.emptyInputBehavior}] is outside of the range defined by the 'minimumValue' and 'maximumValue' options [${options.minimumValue}, ${options.maximumValue}].`\r\n );\r\n }\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.eventBubbles) &&\r\n !AutoNumericHelper.isBoolean(options.eventBubbles)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The event bubbles option 'eventBubbles' is invalid ; it should be either 'true' or 'false', [${options.eventBubbles}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.eventIsCancelable) &&\r\n !AutoNumericHelper.isBoolean(options.eventIsCancelable)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The event is cancelable option 'eventIsCancelable' is invalid ; it should be either 'true' or 'false', [${options.eventIsCancelable}] given.`\r\n );\r\n }\r\n\r\n if (\r\n AutoNumericHelper.isBoolean(options.invalidClass) ||\r\n !/^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/.test(options.invalidClass)\r\n ) {\r\n //TODO Make sure this covers all the CSS class names\r\n AutoNumericHelper.throwError(\r\n `The name of the 'invalidClass' option is not a valid CSS class name ; it should not be empty, and should follow the '^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$' regex, [${options.invalidClass}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.leadingZero, [\r\n AutoNumeric.options.leadingZero.allow,\r\n AutoNumeric.options.leadingZero.deny,\r\n AutoNumeric.options.leadingZero.keep\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The leading zero behavior option 'leadingZero' is invalid ; it should either be 'allow', 'deny' or 'keep', [${options.leadingZero}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.formatOnPageLoad) &&\r\n !AutoNumericHelper.isBoolean(options.formatOnPageLoad)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The format on initialization option 'formatOnPageLoad' is invalid ; it should be either 'true' or 'false', [${options.formatOnPageLoad}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.formulaMode) &&\r\n !AutoNumericHelper.isBoolean(options.formulaMode)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The formula mode option 'formulaMode' is invalid ; it should be either 'true' or 'false', [${options.formulaMode}] given.`\r\n );\r\n }\r\n\r\n if (!testPositiveInteger.test(options.historySize) || options.historySize === 0) {\r\n AutoNumericHelper.throwError(\r\n `The history size option 'historySize' is invalid ; it should be a positive integer, [${options.historySize}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.selectNumberOnly) &&\r\n !AutoNumericHelper.isBoolean(options.selectNumberOnly)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The select number only option 'selectNumberOnly' is invalid ; it should be either 'true' or 'false', [${options.selectNumberOnly}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.selectOnFocus) &&\r\n !AutoNumericHelper.isBoolean(options.selectOnFocus)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The select on focus option 'selectOnFocus' is invalid ; it should be either 'true' or 'false', [${options.selectOnFocus}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.defaultValueOverride) &&\r\n options.defaultValueOverride !== \"\" &&\r\n !testFloatOrIntegerAndPossibleNegativeSign.test(options.defaultValueOverride)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The unformatted default value option 'defaultValueOverride' is invalid ; it should be a string that represents a positive or negative number, [${options.defaultValueOverride}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.unformatOnSubmit) &&\r\n !AutoNumericHelper.isBoolean(options.unformatOnSubmit)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The remove formatting on submit option 'unformatOnSubmit' is invalid ; it should be either 'true' or 'false', [${options.unformatOnSubmit}] given.`\r\n );\r\n }\r\n\r\n if (!AutoNumericHelper.isNull(options.valuesToStrings) && !AutoNumericHelper.isObject(options.valuesToStrings)) {\r\n AutoNumericHelper.throwError(\r\n `The option 'valuesToStrings' is invalid ; it should be an object, ideally with 'key -> value' entries, [${options.valuesToStrings}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.outputFormat) &&\r\n !AutoNumericHelper.isInArray(options.outputFormat, [\r\n AutoNumeric.options.outputFormat.string,\r\n AutoNumeric.options.outputFormat.number,\r\n AutoNumeric.options.outputFormat.dot,\r\n AutoNumeric.options.outputFormat.negativeDot,\r\n AutoNumeric.options.outputFormat.comma,\r\n AutoNumeric.options.outputFormat.negativeComma,\r\n AutoNumeric.options.outputFormat.dotNegative,\r\n AutoNumeric.options.outputFormat.commaNegative\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The custom locale format option 'outputFormat' is invalid ; it should either be null, 'string', 'number', '.', '-.', ',', '-,', '.-' or ',-', [${options.outputFormat}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.isCancellable) &&\r\n !AutoNumericHelper.isBoolean(options.isCancellable)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The cancellable behavior option 'isCancellable' is invalid ; it should be either 'true' or 'false', [${options.isCancellable}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.modifyValueOnWheel) &&\r\n !AutoNumericHelper.isBoolean(options.modifyValueOnWheel)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The increment/decrement on mouse wheel option 'modifyValueOnWheel' is invalid ; it should be either 'true' or 'false', [${options.modifyValueOnWheel}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.watchExternalChanges) &&\r\n !AutoNumericHelper.isBoolean(options.watchExternalChanges)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The option 'watchExternalChanges' is invalid ; it should be either 'true' or 'false', [${options.watchExternalChanges}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.wheelOn, [\r\n AutoNumeric.options.wheelOn.focus,\r\n AutoNumeric.options.wheelOn.hover\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The wheel behavior option 'wheelOn' is invalid ; it should either be 'focus' or 'hover', [${options.wheelOn}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !(AutoNumericHelper.isString(options.wheelStep) || AutoNumericHelper.isNumber(options.wheelStep)) ||\r\n (options.wheelStep !== \"progressive\" && !testPositiveFloatOrInteger.test(options.wheelStep)) ||\r\n Number(options.wheelStep) === 0\r\n ) {\r\n // A step equal to '0' is rejected\r\n AutoNumericHelper.throwError(\r\n `The wheel step value option 'wheelStep' is invalid ; it should either be the string 'progressive', or a number or a string that represents a positive number (excluding zero), [${options.wheelStep}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isInArray(options.serializeSpaces, [\r\n AutoNumeric.options.serializeSpaces.plus,\r\n AutoNumeric.options.serializeSpaces.percent\r\n ])\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The space replacement character option 'serializeSpaces' is invalid ; it should either be '+' or '%20', [${options.serializeSpaces}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.noEventListeners) &&\r\n !AutoNumericHelper.isBoolean(options.noEventListeners)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The option 'noEventListeners' that prevent the creation of event listeners is invalid ; it should be either 'true' or 'false', [${options.noEventListeners}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isNull(options.styleRules) &&\r\n !(\r\n AutoNumericHelper.isObject(options.styleRules) &&\r\n (Object.prototype.hasOwnProperty.call(options.styleRules, \"positive\") ||\r\n Object.prototype.hasOwnProperty.call(options.styleRules, \"negative\") ||\r\n Object.prototype.hasOwnProperty.call(options.styleRules, \"ranges\") ||\r\n Object.prototype.hasOwnProperty.call(options.styleRules, \"userDefined\"))\r\n )\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The option 'styleRules' is invalid ; it should be a correctly structured object, with one or more 'positive', 'negative', 'ranges' or 'userDefined' attributes, [${options.styleRules}] given.`\r\n );\r\n }\r\n\r\n // Deeper tests of the `styleRules` object : Check that the callback, if defined, is a function\r\n if (\r\n !AutoNumericHelper.isNull(options.styleRules) &&\r\n Object.prototype.hasOwnProperty.call(options.styleRules, \"userDefined\") &&\r\n !AutoNumericHelper.isNull(options.styleRules.userDefined)\r\n ) {\r\n options.styleRules.userDefined.forEach((rule) => {\r\n if (Object.prototype.hasOwnProperty.call(rule, \"callback\") && !AutoNumericHelper.isFunction(rule.callback)) {\r\n AutoNumericHelper.throwError(\r\n `The callback defined in the \\`userDefined\\` attribute is not a function, ${typeof rule.callback} given.`\r\n );\r\n }\r\n });\r\n }\r\n\r\n if (\r\n (!AutoNumericHelper.isNull(options.rawValueDivisor) &&\r\n !testPositiveFloatOrInteger.test(options.rawValueDivisor)) ||\r\n options.rawValueDivisor === 0 ||\r\n options.rawValueDivisor === \"0\" ||\r\n options.rawValueDivisor === 1 ||\r\n options.rawValueDivisor === \"1\"\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The raw value divisor option 'rawValueDivisor' is invalid ; it should be a positive number higher than one, preferably an integer, [${options.rawValueDivisor}] given.`\r\n );\r\n }\r\n\r\n if (!AutoNumericHelper.isTrueOrFalseString(options.readOnly) && !AutoNumericHelper.isBoolean(options.readOnly)) {\r\n AutoNumericHelper.throwError(\r\n `The option 'readOnly' is invalid ; it should be either 'true' or 'false', [${options.readOnly}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.unformatOnHover) &&\r\n !AutoNumericHelper.isBoolean(options.unformatOnHover)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The option 'unformatOnHover' is invalid ; it should be either 'true' or 'false', [${options.unformatOnHover}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.failOnUnknownOption) &&\r\n !AutoNumericHelper.isBoolean(options.failOnUnknownOption)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The debug option 'failOnUnknownOption' is invalid ; it should be either 'true' or 'false', [${options.failOnUnknownOption}] given.`\r\n );\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isTrueOrFalseString(options.createLocalList) &&\r\n !AutoNumericHelper.isBoolean(options.createLocalList)\r\n ) {\r\n AutoNumericHelper.throwError(\r\n `The debug option 'createLocalList' is invalid ; it should be either 'true' or 'false', [${options.createLocalList}] given.`\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Check the `decimalPlaces*` options and output the relevant warnings if some of those will get overwritten during the initialization or settings update.\r\n *\r\n * @param {object} options\r\n * @private\r\n */\r\n static _validateDecimalPlacesRawValue(options) {\r\n // Checks if the number of decimal places for the raw value is lower than the `decimalPlaces`, `decimalPlacesShownOnFocus` and/or `decimalPlacesShownOnBlur` options\r\n if (!AutoNumericHelper.isNull(options.decimalPlacesRawValue)) {\r\n if (options.decimalPlacesRawValue < options.decimalPlaces) {\r\n AutoNumericHelper.warning(\r\n `The number of decimal places to store in the raw value [${options.decimalPlacesRawValue}] is lower than the ones to display [${options.decimalPlaces}]. This will likely confuse your users.\r\nTo solve that, you'd need to either set \\`decimalPlacesRawValue\\` to \\`null\\`, or set a number of decimal places for the raw value equal of bigger than \\`decimalPlaces\\`.`,\r\n options.showWarnings\r\n );\r\n }\r\n\r\n if (options.decimalPlacesRawValue < options.decimalPlacesShownOnFocus) {\r\n AutoNumericHelper.warning(\r\n `The number of decimal places to store in the raw value [${options.decimalPlacesRawValue}] is lower than the ones shown on focus [${options.decimalPlacesShownOnFocus}]. This will likely confuse your users.\r\nTo solve that, you'd need to either set \\`decimalPlacesRawValue\\` to \\`null\\`, or set a number of decimal places for the raw value equal of bigger than \\`decimalPlacesShownOnFocus\\`.`,\r\n options.showWarnings\r\n );\r\n }\r\n\r\n if (options.decimalPlacesRawValue < options.decimalPlacesShownOnBlur) {\r\n AutoNumericHelper.warning(\r\n `The number of decimal places to store in the raw value [${options.decimalPlacesRawValue}] is lower than the ones shown when unfocused [${options.decimalPlacesShownOnBlur}]. This will likely confuse your users.\r\nTo solve that, you'd need to either set \\`decimalPlacesRawValue\\` to \\`null\\`, or set a number of decimal places for the raw value equal of bigger than \\`decimalPlacesShownOnBlur\\`.`,\r\n options.showWarnings\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the settings/options are valid, `false` otherwise.\r\n *\r\n * @param {object} options\r\n * @returns {boolean}\r\n */\r\n static areSettingsValid(options) {\r\n let isValid = true;\r\n try {\r\n this.validate(options, true);\r\n } catch (error) {\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n /**\r\n * Return the default autoNumeric settings.\r\n *\r\n * @returns {object}\r\n */\r\n static getDefaultConfig() {\r\n return AutoNumeric.defaultSettings;\r\n }\r\n\r\n /**\r\n * Return all the predefined language options in one object.\r\n * You can also access a specific language object directly by using `AutoNumeric.getPredefinedOptions().French` for instance.\r\n *\r\n * @returns {object}\r\n */\r\n static getPredefinedOptions() {\r\n return AutoNumeric.predefinedOptions;\r\n }\r\n\r\n /**\r\n * Analyse the given array `options` and return a single 'merged' option objet.\r\n * `options` can be `null`, or an array of an option objects, or an array containing another array of option objects / strings (pre-defined option names)\r\n *\r\n * @param {null|Array<object|string|Array<string|object>>} options\r\n * @returns {null|object}\r\n * @private\r\n */\r\n static _generateOptionsObjectFromOptionsArray(options) {\r\n let optionsResult;\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(options) || options.length === 0) {\r\n optionsResult = null;\r\n } else {\r\n optionsResult = {};\r\n if (options.length === 1 && Array.isArray(options[0])) {\r\n options[0].forEach((optionObject) => {\r\n // Using `_getOptionObject()` allows using pre-defined names in the `options` array\r\n Object.assign(optionsResult, this._getOptionObject(optionObject));\r\n });\r\n } else if (options.length >= 1) {\r\n options.forEach((optionObject) => {\r\n Object.assign(optionsResult, this._getOptionObject(optionObject));\r\n });\r\n }\r\n }\r\n\r\n return optionsResult;\r\n }\r\n\r\n /**\r\n * Format the given number (or numeric string) with the given options. This returns the formatted value as a string.\r\n * This can also format the given DOM element value with the given options and returns the formatted value as a string.\r\n * Note : This function does *not* update that element value with the newly formatted value.\r\n * This basically allows to get the formatted value without first having to initialize an AutoNumeric object.\r\n *\r\n * @param {number|string|HTMLElement|HTMLInputElement} numericStringOrDomElement A number, or a string that represent a javascript number, or a DOM element\r\n * @param {object|null} options Multiple objects can be passed, the latter overwriting the settings from the former ones\r\n * @returns {string|null}\r\n */\r\n static format(numericStringOrDomElement, ...options) {\r\n if (AutoNumericHelper.isUndefined(numericStringOrDomElement) || numericStringOrDomElement === null) {\r\n return null;\r\n }\r\n\r\n // Retrieve the value to format\r\n let value;\r\n if (AutoNumericHelper.isElement(numericStringOrDomElement)) {\r\n value = AutoNumericHelper.getElementValue(numericStringOrDomElement);\r\n } else {\r\n value = numericStringOrDomElement;\r\n }\r\n\r\n if (!AutoNumericHelper.isString(value) && !AutoNumericHelper.isNumber(value)) {\r\n AutoNumericHelper.throwError(\r\n `The value \"${value}\" being \"set\" is not numeric and therefore cannot be used appropriately.`\r\n );\r\n }\r\n\r\n // Manage options\r\n const optionsToUse = this._generateOptionsObjectFromOptionsArray(options);\r\n\r\n // Initiate a very basic settings object\r\n const settings = Object.assign({}, this.getDefaultConfig(), optionsToUse);\r\n settings.isNegativeSignAllowed = value < 0;\r\n settings.isPositiveSignAllowed = value >= 0;\r\n this._setBrackets(settings);\r\n\r\n const regex = {};\r\n this._cachesUsualRegularExpressions(settings, regex); // This is needed by `_stripAllNonNumberCharactersExceptCustomDecimalChar` that uses those regex\r\n\r\n // Check the validity of the `value` parameter\r\n // Convert the value to a numeric string, stripping unnecessary characters in the process\r\n let valueString = this._toNumericValue(value, settings);\r\n if (isNaN(Number(valueString))) {\r\n AutoNumericHelper.throwError(\r\n `The value [${valueString}] that you are trying to format is not a recognized number.`\r\n );\r\n }\r\n\r\n // Check if the given valueString is valid\r\n if (!this._isWithinRangeWithOverrideOption(valueString, settings)) {\r\n // Throw a custom event\r\n AutoNumericHelper.triggerEvent(\r\n AutoNumeric.events.formatted,\r\n document,\r\n {\r\n oldValue: null,\r\n newValue: null,\r\n oldRawValue: null,\r\n newRawValue: null,\r\n isPristine: null,\r\n error: \"Range test failed\",\r\n aNElement: null\r\n },\r\n true,\r\n true\r\n );\r\n AutoNumericHelper.throwError(\r\n `The value [${valueString}] being set falls outside of the minimumValue [${settings.minimumValue}] and maximumValue [${settings.maximumValue}] range set for this element`\r\n );\r\n }\r\n\r\n // Directly format any `valuesToStrings` values, if found\r\n if (settings.valuesToStrings && this._checkValuesToStringsSettings(value, settings)) {\r\n return settings.valuesToStrings[value];\r\n }\r\n\r\n // Generate the `negativePositiveSignPlacement` option as needed\r\n this._correctNegativePositiveSignPlacementOption(settings);\r\n // Calculate the needed decimal places\r\n this._calculateDecimalPlacesOnInit(settings);\r\n\r\n // Multiply the raw value with `rawValueDivisor` if defined\r\n if (\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(settings.rawValueDivisor) &&\r\n settings.rawValueDivisor !== 0 && // Only divide if the `rawValueDivisor` option is set\r\n valueString !== \"\" &&\r\n valueString !== null\r\n ) {\r\n // Do not modify the `valueString` if it's an empty string or null\r\n valueString *= settings.rawValueDivisor;\r\n }\r\n\r\n // Everything is ok, proceed to rounding, formatting and grouping\r\n valueString = this._roundFormattedValueShownOnFocus(valueString, settings);\r\n valueString = this._modifyNegativeSignAndDecimalCharacterForFormattedValue(valueString, settings);\r\n valueString = this._addGroupSeparators(valueString, settings, false, valueString);\r\n\r\n return valueString;\r\n }\r\n\r\n /**\r\n * Format the given DOM element value, and set the resulting value back as the element value.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @param {object} options\r\n * @returns {string|null}\r\n */\r\n static formatAndSet(domElement, options = null) {\r\n //FIXME test this\r\n const formattedValue = this.format(domElement, options);\r\n AutoNumericHelper.setElementValue(domElement, formattedValue);\r\n\r\n return formattedValue;\r\n }\r\n\r\n /**\r\n * Unformat the given formatted string with the given options. This returns a numeric string.\r\n * It can also unformat the given DOM element value with the given options and returns the unformatted numeric string.\r\n * Note: This does *not* update that element value.\r\n * This basically allows to get the unformatted value without first having to initialize an AutoNumeric object.\r\n *\r\n * @param {string|number|HTMLElement|HTMLInputElement} numericStringOrDomElement A number, or a string that represent a javascript number, or a DOM element\r\n * @param {object|null} options Multiple objects can be passed, the latter overwriting the settings from the former ones\r\n * @returns {string|number|NaN}\r\n */\r\n static unformat(numericStringOrDomElement, ...options) {\r\n if (AutoNumericHelper.isNumberStrict(numericStringOrDomElement)) {\r\n // Giving an unformatted value should return the same unformatted value, whatever the options passed as a parameter\r\n return numericStringOrDomElement;\r\n }\r\n\r\n // Retrieve the value to unformat\r\n let value;\r\n if (AutoNumericHelper.isElement(numericStringOrDomElement)) {\r\n value = AutoNumericHelper.getElementValue(numericStringOrDomElement);\r\n } else {\r\n value = numericStringOrDomElement;\r\n }\r\n\r\n if (value === \"\") {\r\n // This allows to be coherent when serializing forms with empty inputs. Fix issue #512.\r\n return \"\";\r\n }\r\n\r\n if (AutoNumericHelper.isUndefined(value) || value === null) {\r\n return null;\r\n }\r\n\r\n if (AutoNumericHelper.isArray(value) || AutoNumericHelper.isObject(value)) {\r\n // Check the validity of the `value` parameter\r\n AutoNumericHelper.throwError(\r\n `A number or a string representing a number is needed to be able to unformat it, [${value}] given.`\r\n );\r\n }\r\n\r\n // Manage options\r\n const optionsToUse = this._generateOptionsObjectFromOptionsArray(options);\r\n\r\n // Generate the settings\r\n const settings = Object.assign({}, this.getDefaultConfig(), optionsToUse);\r\n settings.isNegativeSignAllowed = false;\r\n settings.isPositiveSignAllowed = true;\r\n value = value.toString();\r\n\r\n // Directly unformat any `valuesToStrings` values, if found\r\n if (settings.valuesToStrings && this._checkStringsToValuesSettings(value, settings)) {\r\n return AutoNumericHelper.objectKeyLookup(settings.valuesToStrings, value);\r\n }\r\n\r\n // This checks if a negative sign is anywhere in the `value`, not just on the very first character (ie. '12345.67-')\r\n if (AutoNumericHelper.isNegative(value, settings.negativeSignCharacter)) {\r\n settings.isNegativeSignAllowed = true;\r\n settings.isPositiveSignAllowed = false;\r\n } else if (!AutoNumericHelper.isNull(settings.negativeBracketsTypeOnBlur)) {\r\n [settings.firstBracket, settings.lastBracket] = settings.negativeBracketsTypeOnBlur.split(\",\");\r\n if (value.charAt(0) === settings.firstBracket && value.charAt(value.length - 1) === settings.lastBracket) {\r\n settings.isNegativeSignAllowed = true;\r\n settings.isPositiveSignAllowed = false;\r\n value = this._removeBrackets(value, settings, false);\r\n }\r\n }\r\n\r\n value = this._convertToNumericString(value, settings);\r\n const unwantedCharacters = new RegExp(`[^+-0123456789.]`, \"gi\");\r\n if (unwantedCharacters.test(value)) {\r\n return NaN;\r\n }\r\n\r\n // Generate the `negativePositiveSignPlacement` option as needed\r\n this._correctNegativePositiveSignPlacementOption(settings);\r\n // Calculate the needed decimal places\r\n if (settings.decimalPlacesRawValue) {\r\n // `originalDecimalPlacesRawValue` needs to be defined\r\n settings.originalDecimalPlacesRawValue = settings.decimalPlacesRawValue;\r\n } else {\r\n settings.originalDecimalPlacesRawValue = settings.decimalPlaces;\r\n }\r\n\r\n this._calculateDecimalPlacesOnInit(settings);\r\n\r\n // Divide the raw value with `rawValueDivisor` if defined\r\n if (\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(settings.rawValueDivisor) &&\r\n settings.rawValueDivisor !== 0 && // Only divide if the `rawValueDivisor` option is set\r\n value !== \"\" &&\r\n value !== null\r\n ) {\r\n // Do not modify the `value` if it's an empty string or null\r\n value /= settings.rawValueDivisor;\r\n }\r\n\r\n value = this._roundRawValue(value, settings);\r\n value = value.replace(settings.decimalCharacter, \".\"); // Here we need to convert back the decimal character to a period since `_roundValue` adds it in some cases\r\n value = this._toLocale(value, settings.outputFormat, settings);\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Unformat the given DOM element value, and set the resulting value back as the element value.\r\n *\r\n * @param {HTMLElement|HTMLInputElement} domElement\r\n * @param {object} options\r\n * @returns {*}\r\n */\r\n static unformatAndSet(domElement, options = null) {\r\n //FIXME test this\r\n const unformattedValue = this.unformat(domElement, options);\r\n AutoNumericHelper.setElementValue(domElement, unformattedValue);\r\n\r\n return unformattedValue;\r\n }\r\n\r\n /**\r\n * Unformat and localize the given formatted string with the given options. This returns a numeric string.\r\n * It can also unformat and localize the given DOM element value with the given options and returns the unformatted numeric string.\r\n * Note: This does *not* update that element value.\r\n * This basically allows to get the localized value without first having to initialize an AutoNumeric object.\r\n *\r\n * @param {string|number|HTMLElement|HTMLInputElement} numericStringOrDomElement\r\n * @param {object} settings\r\n * @returns {*}\r\n */\r\n static localize(numericStringOrDomElement, settings = null) {\r\n let value;\r\n if (AutoNumericHelper.isElement(numericStringOrDomElement)) {\r\n value = AutoNumericHelper.getElementValue(numericStringOrDomElement);\r\n } else {\r\n value = numericStringOrDomElement;\r\n }\r\n\r\n if (value === \"\") {\r\n // This allows to be coherent when serializing forms with empty inputs. Fix issue #512.\r\n return \"\";\r\n }\r\n\r\n if (AutoNumericHelper.isNull(settings)) {\r\n settings = AutoNumeric.defaultSettings;\r\n }\r\n\r\n value = this.unformat(value, settings);\r\n\r\n //XXX The following code is pretty close to the one you can find in `getLocalized()`, but different enough so we won't refactor it.\r\n if (Number(value) === 0 && settings.leadingZero !== AutoNumeric.options.leadingZero.keep) {\r\n value = \"0\";\r\n }\r\n\r\n let outputFormatToUse;\r\n if (AutoNumericHelper.isNull(settings)) {\r\n outputFormatToUse = settings.outputFormat;\r\n } else {\r\n outputFormatToUse = AutoNumeric.defaultSettings.outputFormat;\r\n }\r\n\r\n return this._toLocale(value, outputFormatToUse, settings);\r\n }\r\n\r\n static localizeAndSet(domElement, options = null) {\r\n //FIXME test this\r\n const localizedValue = this.localize(domElement, options);\r\n AutoNumericHelper.setElementValue(domElement, localizedValue);\r\n\r\n return localizedValue;\r\n }\r\n\r\n /**\r\n * Return `true` if the given DOM element has an AutoNumeric object that manages it.\r\n * This function also accepts a selector string.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector Accepts either directly a DOM element to test, or a string selector (that will return one and only one element, if any)\r\n * @returns {boolean}\r\n */\r\n static isManagedByAutoNumeric(domElementOrSelector) {\r\n //FIXME test this\r\n return this._isInGlobalList(AutoNumericHelper.domElement(domElementOrSelector));\r\n }\r\n\r\n /**\r\n * Return the AutoNumeric object that manages the given DOM element.\r\n * This function also accepts a selector string.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector Accepts either directly a DOM element to test, or a string selector (that will return one and only one element, if any)\r\n * @returns {null|AutoNumeric}\r\n */\r\n static getAutoNumericElement(domElementOrSelector) {\r\n const domElement = AutoNumericHelper.domElement(domElementOrSelector);\r\n\r\n if (!this.isManagedByAutoNumeric(domElement)) {\r\n return null;\r\n }\r\n\r\n return this._getFromGlobalList(domElement);\r\n }\r\n\r\n /**\r\n * Set the given element value, and format it immediately.\r\n * Return `null` if no AutoNumeric object is found, else, return the AutoNumeric object.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector Either a DOM element reference, or a selector string can be used\r\n * @param {number|string|null} newValue The value must be a Number, a numeric string or `null` (if `emptyInputBehavior` is set to `'null'`)\r\n * @param {object} options A settings object that will override the current settings. Note: the update is done only if the `newValue` is defined.\r\n * @param {boolean} saveChangeToHistory If set to `true`, then the change is recorded in the history table\r\n * @returns {AutoNumeric|null}\r\n */\r\n static set(domElementOrSelector, newValue, options = null, saveChangeToHistory = true) {\r\n const domElement = AutoNumericHelper.domElement(domElementOrSelector);\r\n\r\n if (!this.isManagedByAutoNumeric(domElement)) {\r\n let showWarnings;\r\n if (!AutoNumericHelper.isNull(options) && Object.prototype.hasOwnProperty.call(options, \"showWarnings\")) {\r\n showWarnings = options.showWarnings;\r\n } else {\r\n showWarnings = true;\r\n }\r\n\r\n AutoNumericHelper.warning(\r\n `Impossible to find an AutoNumeric object for the given DOM element or selector.`,\r\n showWarnings\r\n );\r\n\r\n return null;\r\n }\r\n\r\n return this.getAutoNumericElement(domElement).set(newValue, options, saveChangeToHistory);\r\n }\r\n\r\n /**\r\n * Return the unformatted value as a string from the given DOM element or query selector.\r\n * This can also return `null` if `rawValue` is null.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @param {function|null} callback\r\n * @returns {string|null}\r\n */\r\n static getNumericString(domElementOrSelector, callback = null) {\r\n return this._get(domElementOrSelector, \"getNumericString\", callback);\r\n }\r\n\r\n /**\r\n * Return the current formatted value of the AutoNumeric element as a string, from the given DOM element or query selector.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @param {function|null} callback\r\n * @returns {string}\r\n */\r\n static getFormatted(domElementOrSelector, callback = null) {\r\n return this._get(domElementOrSelector, \"getFormatted\", callback);\r\n }\r\n\r\n /**\r\n * Return the element unformatted value as a real Javascript number, from the given DOM element or query selector.\r\n * Warning: This can lead to precision problems with big numbers that should be stored as strings.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @param {function|null} callback\r\n * @returns {number|null}\r\n */\r\n static getNumber(domElementOrSelector, callback = null) {\r\n return this._get(domElementOrSelector, \"getNumber\", callback);\r\n }\r\n\r\n /**\r\n * DRY the code between the static `get*` functions\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @param {string} getFunction The name of the non-static `get*` function as a string\r\n * @param {function|null} callback\r\n * @returns {*}\r\n * @private\r\n */\r\n static _get(domElementOrSelector, getFunction, callback = null) {\r\n const domElement = AutoNumericHelper.domElement(domElementOrSelector);\r\n\r\n if (!this.isManagedByAutoNumeric(domElement)) {\r\n AutoNumericHelper.throwError(`Impossible to find an AutoNumeric object for the given DOM element or selector.`);\r\n }\r\n\r\n return this.getAutoNumericElement(domElement)[getFunction](callback);\r\n }\r\n\r\n /**\r\n * Returns the unformatted value following the `outputFormat` setting, from the given DOM element or query selector.\r\n * See the non-static `getLocalized()` method documentation for more details.\r\n *\r\n * @param {HTMLElement|string} domElementOrSelector\r\n * @param {null|string|function} forcedOutputFormat\r\n * @param {function|null} callback\r\n * @returns {*}\r\n */\r\n static getLocalized(domElementOrSelector, forcedOutputFormat = null, callback = null) {\r\n const domElement = AutoNumericHelper.domElement(domElementOrSelector);\r\n\r\n if (!this.isManagedByAutoNumeric(domElement)) {\r\n AutoNumericHelper.throwError(`Impossible to find an AutoNumeric object for the given DOM element or selector.`);\r\n }\r\n\r\n return this.getAutoNumericElement(domElement).getLocalized(forcedOutputFormat, callback);\r\n }\r\n\r\n // Pre-defined options can be called to update the current default options with their specificities\r\n //XXX A better way would be to not initialize first, but that's not possible since `new` is called first and we do not pass the language options (ie. `French`) to the constructor\r\n\r\n /**\r\n * Update the AutoNumeric object with the predefined options, and possibly some option overrides.\r\n *\r\n * @param {object} predefinedOption\r\n * @param {object} optionOverride\r\n * @private\r\n * @returns {AutoNumeric}\r\n */\r\n _updatePredefinedOptions(predefinedOption, optionOverride = null) {\r\n if (!AutoNumericHelper.isNull(optionOverride)) {\r\n this._mergeSettings(predefinedOption, optionOverride);\r\n this.update(this.settings);\r\n } else {\r\n this.update(predefinedOption);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the French pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n french(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().French, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the North American pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n northAmerican(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().NorthAmerican, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the British pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n british(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().British, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the Swiss pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n swiss(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().Swiss, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the Japanese pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n japanese(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().Japanese, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the Spanish pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n spanish(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().Spanish, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the Chinese pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n chinese(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().Chinese, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Update the settings to use the Brazilian pre-defined language options.\r\n * Those pre-defined options can be overridden by passing an option object as a parameter.\r\n *\r\n * @param {object} optionOverride\r\n * @returns {AutoNumeric}\r\n */\r\n brazilian(optionOverride = null) {\r\n this._updatePredefinedOptions(AutoNumeric.getPredefinedOptions().Brazilian, optionOverride);\r\n\r\n return this;\r\n }\r\n\r\n // Internal private functions\r\n /**\r\n * Run any callbacks found in the settings object in order to set the settings value back.\r\n * Any parameter can have a callback defined.\r\n * The callback takes the current AutoNumeric element as the first argument, and the key name as the second.\r\n * @example callback(this, 'currencySymbol')\r\n */\r\n _runCallbacksFoundInTheSettingsObject() {\r\n //FIXME test this\r\n // Loops through the this.settings object (option array) to find the following\r\n for (const key in this.settings) {\r\n if (Object.prototype.hasOwnProperty.call(this.settings, key)) {\r\n const value = this.settings[key];\r\n\r\n if (typeof value === \"function\") {\r\n this.settings[key] = value(this, key);\r\n } else {\r\n // Calls the attached function from the html5 data. For instance: <tag data-currency-symbol=\"functionName\"></tag>\r\n let htmlAttribute = this.domElement.getAttribute(key); //TODO Use `dataset` instead of `getAttribute` when we won't need to support obsolete browsers\r\n htmlAttribute = AutoNumericHelper.camelize(htmlAttribute);\r\n if (typeof this.settings[htmlAttribute] === \"function\") {\r\n this.settings[key] = htmlAttribute(this, key);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Keep track if the settings configuration leads to a trailing negative sign (only when the raw value is negative), so we do not have to test the settings values every time we need to know that.\r\n * `isTrailingNegative` is set to `true` if the settings result in a trailing negative character, `false` otherwise.\r\n * Note: This returns `true` even if the raw value is positive.\r\n * @private\r\n */\r\n _setTrailingNegativeSignInfo() {\r\n this.isTrailingNegative =\r\n (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.suffix) ||\r\n (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix &&\r\n (this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.left ||\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.right));\r\n }\r\n\r\n /**\r\n * Strip all the unwanted non-number characters.\r\n * However it does not reorder the localized negative sign.\r\n *\r\n * @param {string} s\r\n * @param {object} settings\r\n * @param {boolean} stripZeros If set to `false`, then the leading zero(s) are not stripped, otherwise if set to `true`, the `leadingZero` option is followed\r\n * @param {boolean} isFocused If the element is focused, then this is `true`\r\n * @returns {string}\r\n * @private\r\n */\r\n static _stripAllNonNumberCharacters(s, settings, stripZeros, isFocused) {\r\n return this._stripAllNonNumberCharactersExceptCustomDecimalChar(s, settings, stripZeros, isFocused).replace(\r\n settings.decimalCharacter,\r\n \".\"\r\n );\r\n }\r\n\r\n /**\r\n * Strip all unwanted non-number characters except the custom decimal character.\r\n *\r\n * It converts the custom negative sign and removes the positive sign (custom or not).\r\n * This keeps :\r\n * - the numbers,\r\n * - the normal negative sign '-' if any,\r\n * - and the *custom* decimal character.\r\n *\r\n * @param {string} s\r\n * @param {object} settings\r\n * @param {boolean} stripZeros If set to `false`, then the leading zero(s) are not stripped, otherwise if set to `true`, the `leadingZero` option is followed\r\n * @param {boolean} isFocused If the element is focused, then this is `true`\r\n * @returns {string|*}\r\n */\r\n static _stripAllNonNumberCharactersExceptCustomDecimalChar(s, settings, stripZeros, isFocused) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n //TODO This function is called 10 times (sic!) on each key input, couldn't we lower that number? cf. issue #325\r\n s = this._normalizeCurrencySuffixAndNegativeSignCharacters(s, settings);\r\n\r\n // Then remove all the characters that are not numbers, the normal negative sign '-', or the custom decimal character (note: this also remove any custom positive sign)\r\n s = s.replace(settings.allowedAutoStrip, \"\");\r\n\r\n // Get only number string\r\n const m = s.match(settings.numRegAutoStrip);\r\n s = m ? [m[1], m[2], m[3]].join(\"\") : \"\";\r\n\r\n if (\r\n settings.leadingZero === AutoNumeric.options.leadingZero.allow ||\r\n settings.leadingZero === AutoNumeric.options.leadingZero.keep\r\n ) {\r\n let negativeSign = \"\";\r\n const [integerPart, decimalPart] = s.split(settings.decimalCharacter);\r\n let modifiedIntegerPart = integerPart;\r\n if (AutoNumericHelper.contains(modifiedIntegerPart, settings.negativeSignCharacter)) {\r\n negativeSign = settings.negativeSignCharacter;\r\n modifiedIntegerPart = modifiedIntegerPart.replace(settings.negativeSignCharacter, \"\");\r\n }\r\n\r\n // Strip leading zero on positive value if needed\r\n if (\r\n negativeSign === \"\" &&\r\n modifiedIntegerPart.length > settings.mIntPos &&\r\n modifiedIntegerPart.charAt(0) === \"0\"\r\n ) {\r\n modifiedIntegerPart = modifiedIntegerPart.slice(1);\r\n }\r\n\r\n // Strip leading zero on negative value if needed\r\n if (\r\n negativeSign !== \"\" &&\r\n modifiedIntegerPart.length > settings.mIntNeg &&\r\n modifiedIntegerPart.charAt(0) === \"0\"\r\n ) {\r\n modifiedIntegerPart = modifiedIntegerPart.slice(1);\r\n }\r\n\r\n s = `${negativeSign}${modifiedIntegerPart}${\r\n AutoNumericHelper.isUndefined(decimalPart) ? \"\" : settings.decimalCharacter + decimalPart\r\n }`;\r\n }\r\n\r\n if (\r\n (stripZeros && settings.leadingZero === AutoNumeric.options.leadingZero.deny) ||\r\n (!isFocused && settings.leadingZero === AutoNumeric.options.leadingZero.allow)\r\n ) {\r\n s = s.replace(settings.stripReg, \"$1$2\");\r\n }\r\n\r\n return s;\r\n }\r\n\r\n /**\r\n * Sets or removes brackets on negative values, depending on the focus state, which is passed as `isFocused`.\r\n * The focus state is 'stored' in that object property.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @param {boolean} isFocused\r\n * @returns {*}\r\n */\r\n static _toggleNegativeBracket(value, settings, isFocused) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n let result;\r\n if (isFocused) {\r\n result = this._removeBrackets(value, settings);\r\n } else {\r\n result = this._addBrackets(value, settings);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Add the bracket types specified in the `settings` object, to the given string `value`.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {string}\r\n * @private\r\n */\r\n static _addBrackets(value, settings) {\r\n if (AutoNumericHelper.isNull(settings.negativeBracketsTypeOnBlur)) {\r\n return value;\r\n }\r\n\r\n return `${settings.firstBracket}${value.replace(settings.negativeSignCharacter, \"\")}${settings.lastBracket}`;\r\n }\r\n\r\n /**\r\n * Remove the bracket types specified in the `settings` object, from the given string `value`.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @param {boolean} rearrangeSignsAndValueOrder If set to `true`, then only the brackets are remove and a negative sign is added, without reordering the negative sign, currency symbol and value according to the settings.\r\n * @returns {string}\r\n * @private\r\n */\r\n static _removeBrackets(value, settings, rearrangeSignsAndValueOrder = true) {\r\n let result;\r\n if (!AutoNumericHelper.isNull(settings.negativeBracketsTypeOnBlur) && value.charAt(0) === settings.firstBracket) {\r\n // Remove the brackets if they are present\r\n result = value.replace(settings.firstBracket, \"\");\r\n result = result.replace(settings.lastBracket, \"\");\r\n\r\n // Add back the negative sign at the right place\r\n if (rearrangeSignsAndValueOrder) {\r\n // First we need to remove the currency symbol from the value, since we want to be able to add back the negative sign at the right place (including between the value and the currency sign)\r\n result = result.replace(settings.currencySymbol, \"\");\r\n result = this._mergeCurrencySignNegativePositiveSignAndValue(result, settings, true, false); //TODO This assume the value is negative and non-empty. Is this always the case?\r\n } else {\r\n // Here we only want to add the negative sign since we removed the brackets, without reordering\r\n result = `${settings.negativeSignCharacter}${result}`;\r\n }\r\n } else {\r\n result = value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Analyze the `negativeBracketsTypeOnBlur` options and keep track of the first and last bracket characters to use.\r\n *\r\n * @param {object} settings\r\n * @private\r\n */\r\n static _setBrackets(settings) {\r\n if (AutoNumericHelper.isNull(settings.negativeBracketsTypeOnBlur)) {\r\n settings.firstBracket = \"\";\r\n settings.lastBracket = \"\";\r\n } else {\r\n // Use temporary variables to fix the MS Edge destructuring issue (see pull request #564)\r\n const [firstBracket, lastBracket] = settings.negativeBracketsTypeOnBlur.split(\",\");\r\n settings.firstBracket = firstBracket;\r\n settings.lastBracket = lastBracket;\r\n }\r\n }\r\n\r\n /**\r\n * Return a number as a numeric string that can be typecast to a Number that Javascript will understand.\r\n *\r\n * This function returns the given string by stripping:\r\n * - the currency sign (currencySymbol),\r\n * - the grouping separators (digitalGroupSpacing),\r\n * - the suffix text (suffixText),\r\n * - the positive sign (positiveSignCharacter),\r\n * - the brackets if any,\r\n * - by replacing the negative sign character with an hyphen,\r\n * - and by replacing the decimal character (decimalCharacter) by a dot.\r\n *\r\n * Lastly, it also put the negative sign back to its normal position if needed.\r\n * Bonus; it converts any arabic numbers found to the latin ones.\r\n *\r\n * @param {string} s\r\n * @param {object} settings\r\n * @returns {string|void|*}\r\n */\r\n static _convertToNumericString(s, settings) {\r\n // Remove the custom brackets\r\n s = this._removeBrackets(s, settings, false);\r\n s = this._normalizeCurrencySuffixAndNegativeSignCharacters(s, settings);\r\n\r\n // Remove the grouping separators (thousands separators usually)\r\n s = s.replace(new RegExp(`[${settings.digitGroupSeparator}]`, \"g\"), \"\");\r\n\r\n // Replace the decimal character by a dot\r\n if (settings.decimalCharacter !== \".\") {\r\n s = s.replace(settings.decimalCharacter, \".\");\r\n }\r\n\r\n // Move the trailing negative sign, if any, to the usual leftmost position\r\n if (AutoNumericHelper.isNegative(s) && s.lastIndexOf(\"-\") === s.length - 1) {\r\n s = s.replace(\"-\", \"\");\r\n s = `-${s}`;\r\n }\r\n\r\n // Replace the custom positive sign\r\n if (settings.showPositiveSign) {\r\n s = s.replace(settings.positiveSignCharacter, \"\");\r\n }\r\n\r\n // Convert arabic numbers to latin ones, if any\r\n const convertToNumber = settings.leadingZero !== AutoNumeric.options.leadingZero.keep;\r\n const temp = AutoNumericHelper.arabicToLatinNumbers(s, convertToNumber, false, false);\r\n if (!isNaN(temp)) {\r\n s = temp.toString();\r\n }\r\n\r\n return s;\r\n }\r\n\r\n /**\r\n * Removes the currency symbol and the suffix text from the given string, and replace the custom negative sign with an hyphen.\r\n *\r\n * @param {string} s\r\n * @param {object} settings\r\n * @returns {string | *}\r\n * @private\r\n */\r\n static _normalizeCurrencySuffixAndNegativeSignCharacters(s, settings) {\r\n s = String(s); // Typecast to to a string, in case that the given value is a number\r\n\r\n // Remove the currency symbol\r\n if (settings.currencySymbol !== AutoNumeric.options.currencySymbol.none) {\r\n s = s.replace(settings.currencySymbol, \"\");\r\n }\r\n\r\n // Remove the suffixText\r\n if (settings.suffixText !== AutoNumeric.options.suffixText.none) {\r\n s = s.replace(settings.suffixText, \"\");\r\n }\r\n\r\n // Replace the custom negative sign with an hyphen\r\n if (settings.negativeSignCharacter !== AutoNumeric.options.negativeSignCharacter.hyphen) {\r\n s = s.replace(settings.negativeSignCharacter, \"-\");\r\n }\r\n\r\n return s;\r\n }\r\n\r\n /**\r\n * Converts the ISO numeric string to the locale decimal and minus sign placement.\r\n * See the \"outputFormat\" option definition for more details.\r\n * Note: If the `outputFormat` is set to a number, the custom `negativeSignCharacter` is ignored.\r\n *\r\n * @param {string|null} value The unformatted value\r\n * @param {string|null} locale\r\n * @param {object} settings\r\n * @returns {*}\r\n */\r\n static _toLocale(value, locale, settings) {\r\n if (AutoNumericHelper.isNull(locale) || locale === AutoNumeric.options.outputFormat.string) {\r\n return value;\r\n }\r\n\r\n let result;\r\n switch (locale) {\r\n case AutoNumeric.options.outputFormat.number:\r\n result = Number(value);\r\n break;\r\n case AutoNumeric.options.outputFormat.dotNegative:\r\n result = AutoNumericHelper.isNegative(value) ? value.replace(\"-\", \"\") + \"-\" : value;\r\n break;\r\n case AutoNumeric.options.outputFormat.comma:\r\n case AutoNumeric.options.outputFormat.negativeComma:\r\n result = value.replace(\".\", \",\");\r\n break;\r\n case AutoNumeric.options.outputFormat.commaNegative:\r\n result = value.replace(\".\", \",\");\r\n result = AutoNumericHelper.isNegative(result) ? result.replace(\"-\", \"\") + \"-\" : result;\r\n break;\r\n // The default case\r\n case AutoNumeric.options.outputFormat.dot:\r\n case AutoNumeric.options.outputFormat.negativeDot:\r\n result = value;\r\n break;\r\n default:\r\n AutoNumericHelper.throwError(`The given outputFormat [${locale}] option is not recognized.`);\r\n }\r\n\r\n if (locale !== AutoNumeric.options.outputFormat.number && settings.negativeSignCharacter !== \"-\") {\r\n // Modify the default minus sign with the custom one, if any\r\n result = result.replace(\"-\", settings.negativeSignCharacter);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Modify the negative sign and the decimal character of the given string value to an hyphen (-) and a dot (.) in order to make that value 'typecastable' to a real number.\r\n *\r\n * @param {string} s The formatted value\r\n * @returns {string} The value with the 'normal' minus sign and decimal character\r\n */\r\n _modifyNegativeSignAndDecimalCharacterForRawValue(s) {\r\n if (this.settings.decimalCharacter !== \".\") {\r\n s = s.replace(this.settings.decimalCharacter, \".\");\r\n }\r\n\r\n if (this.settings.negativeSignCharacter !== \"-\" && this.settings.isNegativeSignAllowed) {\r\n s = s.replace(this.settings.negativeSignCharacter, \"-\");\r\n }\r\n\r\n if (!s.match(/\\d/)) {\r\n // The default value returned by `get` is not formatted with decimals\r\n s += \"0\";\r\n }\r\n\r\n return s;\r\n }\r\n\r\n /**\r\n * Modify the negative sign and the decimal character to use those defined in the settings.\r\n *\r\n * @param {string} s\r\n * @param {object} settings\r\n * @returns {string}\r\n */\r\n static _modifyNegativeSignAndDecimalCharacterForFormattedValue(s, settings) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n if (settings.negativeSignCharacter !== \"-\") {\r\n s = s.replace(\"-\", settings.negativeSignCharacter);\r\n }\r\n\r\n if (settings.decimalCharacter !== \".\") {\r\n s = s.replace(\".\", settings.decimalCharacter);\r\n }\r\n\r\n return s;\r\n }\r\n\r\n /**\r\n * Return `true` if the given value is empty or is equal to the negative sign character defined in the given settings.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isElementValueEmptyOrOnlyTheNegativeSign(value, settings) {\r\n return value === \"\" || value === settings.negativeSignCharacter;\r\n }\r\n\r\n /**\r\n * Return the value with the currency symbol and the suffix text ordered according to the given settings.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @param {boolean} signOnEmpty\r\n * @returns {*}\r\n * @private\r\n */\r\n static _orderValueCurrencySymbolAndSuffixText(value, settings, signOnEmpty) {\r\n let result;\r\n if (settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.always || signOnEmpty) {\r\n switch (settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.left:\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix:\r\n case AutoNumeric.options.negativePositiveSignPlacement.none:\r\n result = value + settings.currencySymbol + settings.suffixText;\r\n break;\r\n default:\r\n result = settings.currencySymbol + value + settings.suffixText;\r\n }\r\n } else {\r\n result = value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Modify the input value by adding the group separators, as defined in the settings, and the negative brackets if needed.\r\n *\r\n * @param {string} inputValue The formatted value (ie. with the `decimalCharacter` defined in the settings, not the raw value)\r\n * @param {object} settings\r\n * @param {boolean} isFocused\r\n * @param {number|string|null} currentRawValue The object current raw value (`this.rawValue`)\r\n * @param {number|string|null} forcedRawValue If this is set, then this rawValue is used instead of the one passed through the `settings` object. This is useful is some very specific cases where we need to set the raw value *after* settings the formatted value, using the `_addGroupSeparators()` method.\r\n * @returns {*}\r\n */\r\n static _addGroupSeparators(inputValue, settings, isFocused, currentRawValue, forcedRawValue = null) {\r\n //TODO Test if `inputValue` === '', and return '' directly if that's the case,\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n let isValueNegative;\r\n if (!AutoNumericHelper.isNull(forcedRawValue)) {\r\n // Prefer directly testing if the raw value is negative in order for the test to be more performant than manipulating the formatted value\r\n isValueNegative = forcedRawValue < 0;\r\n } else {\r\n isValueNegative =\r\n AutoNumericHelper.isNegative(inputValue, settings.negativeSignCharacter) ||\r\n AutoNumericHelper.isNegativeWithBrackets(inputValue, settings.firstBracket, settings.lastBracket); // Test if the value is negative before removing the negative sign\r\n }\r\n\r\n inputValue = this._stripAllNonNumberCharactersExceptCustomDecimalChar(inputValue, settings, false, isFocused);\r\n\r\n if (this._isElementValueEmptyOrOnlyTheNegativeSign(inputValue, settings)) {\r\n return this._orderValueCurrencySymbolAndSuffixText(inputValue, settings, true);\r\n }\r\n\r\n const isZeroOrHasNoValue = AutoNumericHelper.isZeroOrHasNoValue(inputValue);\r\n\r\n // Temporarily remove the negative sign if present\r\n if (isValueNegative) {\r\n inputValue = inputValue.replace(\"-\", \"\"); // At this point the `inputValue` has been normalized with a 'normal' negative sign `'-'` //TODO Check that comment validity, since `_stripAllNonNumberCharactersExceptCustomDecimalChar` *does not* convert the negative sign\r\n }\r\n\r\n settings.digitalGroupSpacing = settings.digitalGroupSpacing.toString();\r\n let digitalGroup;\r\n switch (settings.digitalGroupSpacing) {\r\n case AutoNumeric.options.digitalGroupSpacing.two:\r\n digitalGroup = /(\\d)((\\d)(\\d{2}?)+)$/;\r\n break;\r\n case AutoNumeric.options.digitalGroupSpacing.twoScaled:\r\n digitalGroup = /(\\d)((?:\\d{2}){0,2}\\d{3}(?:(?:\\d{2}){2}\\d{3})*?)$/;\r\n break;\r\n case AutoNumeric.options.digitalGroupSpacing.four:\r\n digitalGroup = /(\\d)((\\d{4}?)+)$/;\r\n break;\r\n case AutoNumeric.options.digitalGroupSpacing.three:\r\n default:\r\n digitalGroup = /(\\d)((\\d{3}?)+)$/;\r\n }\r\n\r\n // Splits the string at the decimal string\r\n let [integerPart, decimalPart] = inputValue.split(settings.decimalCharacter);\r\n if (settings.decimalCharacterAlternative && AutoNumericHelper.isUndefined(decimalPart)) {\r\n [integerPart, decimalPart] = inputValue.split(settings.decimalCharacterAlternative);\r\n }\r\n\r\n if (settings.digitGroupSeparator !== \"\") {\r\n // Re-inserts the thousand separator via a regular expression\r\n while (digitalGroup.test(integerPart)) {\r\n integerPart = integerPart.replace(digitalGroup, `$1${settings.digitGroupSeparator}$2`);\r\n }\r\n }\r\n\r\n // Find out how many decimal places should be kept, depending on the object state (isFocused)\r\n let decimalPlacesToRoundTo;\r\n if (isFocused) {\r\n decimalPlacesToRoundTo = settings.decimalPlacesShownOnFocus;\r\n } else {\r\n decimalPlacesToRoundTo = settings.decimalPlacesShownOnBlur;\r\n }\r\n\r\n if (decimalPlacesToRoundTo !== 0 && !AutoNumericHelper.isUndefined(decimalPart)) {\r\n if (decimalPart.length > decimalPlacesToRoundTo) {\r\n // Trim the excessive number of decimal places\r\n decimalPart = decimalPart.substring(0, decimalPlacesToRoundTo);\r\n }\r\n\r\n // Joins the whole number with the decimal value\r\n inputValue = `${integerPart}${settings.decimalCharacter}${decimalPart}`;\r\n } else {\r\n // Otherwise if it's an integer\r\n inputValue = integerPart;\r\n }\r\n\r\n // Add back the negative/positive sign and the currency symbol, at the right positions\r\n inputValue = AutoNumeric._mergeCurrencySignNegativePositiveSignAndValue(\r\n inputValue,\r\n settings,\r\n isValueNegative,\r\n isZeroOrHasNoValue\r\n ); //TODO this function is called again in `_toggleNegativeBracket` if the brackets are removed; let's DRY this\r\n\r\n if (AutoNumericHelper.isNull(forcedRawValue)) {\r\n // If the raw value is not forced, use the default one from the settings object\r\n forcedRawValue = currentRawValue;\r\n }\r\n\r\n // Toggle the negative sign and brackets\r\n if (\r\n settings.negativeBracketsTypeOnBlur !== null &&\r\n (forcedRawValue < 0 || AutoNumericHelper.isNegativeStrict(inputValue, settings.negativeSignCharacter))\r\n ) {\r\n inputValue = this._toggleNegativeBracket(inputValue, settings, isFocused);\r\n }\r\n\r\n let result;\r\n if (settings.suffixText) {\r\n result = `${inputValue}${settings.suffixText}`;\r\n } else {\r\n result = inputValue;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return a semi-formatted string where the input value, the negative or positive sign, and the currency symbol are stitched together at the right positions, using the options set in the `settings` object.\r\n * Note : the `inputValue` is usually not a numeric string since the grouping symbols are already added to it at this point.\r\n *\r\n * @param {string} inputValue\r\n * @param {object} settings\r\n * @param {boolean} isValueNegative\r\n * @param {boolean} isZeroOrHasNoValue\r\n * @returns {*}\r\n * @throws\r\n * @private\r\n */\r\n static _mergeCurrencySignNegativePositiveSignAndValue(inputValue, settings, isValueNegative, isZeroOrHasNoValue) {\r\n let signToUse = \"\";\r\n if (isValueNegative) {\r\n signToUse = settings.negativeSignCharacter;\r\n } else if (settings.showPositiveSign && !isZeroOrHasNoValue) {\r\n signToUse = settings.positiveSignCharacter;\r\n }\r\n\r\n let result;\r\n if (settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix) {\r\n if (\r\n settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix:\r\n case AutoNumeric.options.negativePositiveSignPlacement.left:\r\n result = `${signToUse}${settings.currencySymbol}${inputValue}`;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.right:\r\n result = `${settings.currencySymbol}${signToUse}${inputValue}`;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix:\r\n result = `${settings.currencySymbol}${inputValue}${signToUse}`;\r\n break;\r\n }\r\n } else {\r\n result = settings.currencySymbol + inputValue;\r\n }\r\n } else if (settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n if (\r\n settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix:\r\n case AutoNumeric.options.negativePositiveSignPlacement.right:\r\n result = `${inputValue}${settings.currencySymbol}${signToUse}`;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.left:\r\n result = `${inputValue}${signToUse}${settings.currencySymbol}`;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix:\r\n result = `${signToUse}${inputValue}${settings.currencySymbol}`;\r\n break;\r\n }\r\n } else {\r\n result = inputValue + settings.currencySymbol;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Calculate where to put the caret position on focus if the element content is not selected.\r\n * This calculation is affected by the `caretPositionOnFocus` option which can be either `null`, `'start'`, `'end'`, `'decimalLeft'` or 'decimalRight'`, and will decide where to put the caret (on the left or right of the value or the decimal character, respectively) :\r\n * - `null` : the caret position is not forced\r\n * - `'start'` : the caret is positioned on the left hand side of the value\r\n * - `'end'` : the caret is positioned on the right hand side of the value\r\n * - `'decimalLeft'` : the caret is positioned on the left side of the decimal character\r\n * - `'decimalRight'` : the caret is positioned on the right side of the decimal character\r\n *\r\n * @param {string} value The formatted string stripped of the currency symbol and negative/positive sign\r\n * @returns {number}\r\n * @throws\r\n * @private\r\n */\r\n _initialCaretPosition(value) {\r\n if (\r\n AutoNumericHelper.isNull(this.settings.caretPositionOnFocus) &&\r\n this.settings.selectOnFocus === AutoNumeric.options.selectOnFocus.doNotSelect\r\n ) {\r\n AutoNumericHelper.throwError(\r\n \"`_initialCaretPosition()` should never be called when the `caretPositionOnFocus` option is `null`.\"\r\n );\r\n }\r\n\r\n const isValueNegative = this.rawValue < 0;\r\n const isZeroOrHasNoValue = AutoNumericHelper.isZeroOrHasNoValue(value);\r\n const totalLength = value.length;\r\n\r\n let valueSize = 0;\r\n let integerSize = 0;\r\n let hasDecimalChar = false;\r\n let offsetDecimalChar = 0;\r\n if (this.settings.caretPositionOnFocus !== AutoNumeric.options.caretPositionOnFocus.start) {\r\n value = value.replace(this.settings.negativeSignCharacter, \"\");\r\n value = value.replace(this.settings.positiveSignCharacter, \"\");\r\n value = value.replace(this.settings.currencySymbol, \"\");\r\n valueSize = value.length;\r\n hasDecimalChar = AutoNumericHelper.contains(value, this.settings.decimalCharacter);\r\n\r\n if (\r\n this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalLeft ||\r\n this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalRight\r\n ) {\r\n if (hasDecimalChar) {\r\n integerSize = value.indexOf(this.settings.decimalCharacter);\r\n offsetDecimalChar = this.settings.decimalCharacter.length;\r\n } else {\r\n integerSize = valueSize;\r\n offsetDecimalChar = 0;\r\n }\r\n }\r\n }\r\n\r\n let signToUse = \"\";\r\n if (isValueNegative) {\r\n signToUse = this.settings.negativeSignCharacter;\r\n } else if (this.settings.showPositiveSign && !isZeroOrHasNoValue) {\r\n signToUse = this.settings.positiveSignCharacter;\r\n }\r\n\r\n const positiveNegativeSignSize = signToUse.length;\r\n const currencySymbolSize = this.settings.currencySymbol.length;\r\n\r\n // Calculate the caret position based on `currencySymbolPlacement`, `negativePositiveSignPlacement` and `caretPositionOnFocus`\r\n let caretPosition;\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix) {\r\n if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.start) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +€|12.34\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // +€|12.34\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // €+|12.34\r\n caretPosition = positiveNegativeSignSize + currencySymbolSize;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // €|12.34+\r\n caretPosition = currencySymbolSize;\r\n break;\r\n }\r\n } else {\r\n // €|12.34\r\n caretPosition = currencySymbolSize;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.end) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +€12.34|\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // +€12.34|\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // €+12.34|\r\n caretPosition = totalLength;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // €12.34|+\r\n caretPosition = currencySymbolSize + valueSize;\r\n break;\r\n }\r\n } else {\r\n // €12.34|\r\n caretPosition = totalLength;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalLeft) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +€12|.34\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // +€12|.34\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // €+12|.34\r\n caretPosition = positiveNegativeSignSize + currencySymbolSize + integerSize;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // €12|.34+\r\n caretPosition = currencySymbolSize + integerSize;\r\n break;\r\n }\r\n } else {\r\n // €12|.34\r\n caretPosition = currencySymbolSize + integerSize;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalRight) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +€12.|34\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // +€12.|34\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // €+12.|34\r\n caretPosition = positiveNegativeSignSize + currencySymbolSize + integerSize + offsetDecimalChar;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // €12.|34+\r\n caretPosition = currencySymbolSize + integerSize + offsetDecimalChar;\r\n break;\r\n }\r\n } else {\r\n // €12.|34\r\n caretPosition = currencySymbolSize + integerSize + offsetDecimalChar;\r\n }\r\n }\r\n } else if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.start) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // |12.34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // |12.34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // |12.34+€\r\n caretPosition = 0;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +|12.34€\r\n caretPosition = positiveNegativeSignSize;\r\n break;\r\n }\r\n } else {\r\n // |12.34€\r\n caretPosition = 0;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.end) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // 12.34|€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // 12.34|€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // 12.34|+€\r\n caretPosition = valueSize;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +12.34|€\r\n caretPosition = positiveNegativeSignSize + valueSize;\r\n break;\r\n }\r\n } else {\r\n // 12.34|€\r\n caretPosition = valueSize;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalLeft) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // 12|.34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // 12|.34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // 12|.34+€\r\n caretPosition = integerSize;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +12|.34€\r\n caretPosition = positiveNegativeSignSize + integerSize;\r\n break;\r\n }\r\n } else {\r\n // 12|.34€\r\n caretPosition = integerSize;\r\n }\r\n } else if (this.settings.caretPositionOnFocus === AutoNumeric.options.caretPositionOnFocus.decimalRight) {\r\n if (\r\n this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.none &&\r\n (isValueNegative || (!isValueNegative && this.settings.showPositiveSign && !isZeroOrHasNoValue))\r\n ) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.suffix: // 12.|34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.right: // 12.|34€+\r\n case AutoNumeric.options.negativePositiveSignPlacement.left: // 12.|34+€\r\n caretPosition = integerSize + offsetDecimalChar;\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.prefix: // +12.|34€\r\n caretPosition = positiveNegativeSignSize + integerSize + offsetDecimalChar;\r\n break;\r\n }\r\n } else {\r\n // 12.|34€\r\n caretPosition = integerSize + offsetDecimalChar;\r\n }\r\n }\r\n }\r\n\r\n return caretPosition;\r\n }\r\n\r\n /**\r\n * Truncate the trailing zeroes to the given number of decimal places\r\n *\r\n * @param {string} roundedInputValue\r\n * @param {int} decimalPlacesNeeded The number of decimal places to keep\r\n * @returns {string}\r\n */\r\n static _truncateZeros(roundedInputValue, decimalPlacesNeeded) {\r\n let regex;\r\n switch (decimalPlacesNeeded) {\r\n case 0:\r\n // Prevents padding - removes trailing zeros until the first significant digit is encountered\r\n regex = /(\\.(?:\\d*[1-9])?)0*$/;\r\n break;\r\n case 1:\r\n // Allows padding when decimalPlacesNeeded equals one - leaves one zero trailing the decimal character\r\n regex = /(\\.\\d(?:\\d*[1-9])?)0*$/;\r\n break;\r\n default:\r\n // Removes superfluous zeros after the decimalPlacesNeeded length\r\n regex = new RegExp(`(\\\\.\\\\d{${decimalPlacesNeeded}}(?:\\\\d*[1-9])?)0*`);\r\n }\r\n\r\n // If there are no decimal places, we don't need a decimal point at the end\r\n roundedInputValue = roundedInputValue.replace(regex, \"$1\");\r\n if (decimalPlacesNeeded === 0) {\r\n roundedInputValue = roundedInputValue.replace(/\\.$/, \"\");\r\n }\r\n\r\n return roundedInputValue;\r\n }\r\n\r\n /**\r\n * Round the given `value` with the number of decimal places to keep for the raw value.\r\n *\r\n * @param {string|null} value An unformatted numeric value\r\n * @param {object} settings\r\n * @returns {*}\r\n * @private\r\n */\r\n static _roundRawValue(value, settings) {\r\n return this._roundValue(value, settings, settings.decimalPlacesRawValue);\r\n }\r\n\r\n /**\r\n * Round the given `value` with the number of decimal places to show for the element if focused.\r\n *\r\n * @param {string|null} value An unformatted numeric value\r\n * @param {object} settings\r\n * @returns {*}\r\n * @private\r\n */\r\n static _roundFormattedValueShownOnFocus(value, settings) {\r\n return this._roundValue(value, settings, Number(settings.decimalPlacesShownOnFocus));\r\n }\r\n\r\n /**\r\n * Round the given `value` with the number of decimal places to show for the element if unfocused.\r\n *\r\n * @param {string|null} value An unformatted numeric value\r\n * @param {object} settings\r\n * @returns {*}\r\n * @private\r\n */\r\n static _roundFormattedValueShownOnBlur(value, settings) {\r\n return this._roundValue(value, settings, Number(settings.decimalPlacesShownOnBlur));\r\n }\r\n\r\n /**\r\n * Round the given `value` with the number of decimal places to show for the element based on the value of isFocused.\r\n *\r\n * @param {string|null} value An unformatted numeric value\r\n * @param {object} settings\r\n * @param {boolean} isFocused\r\n * @returns {*}\r\n * @private\r\n */\r\n static _roundFormattedValueShownOnFocusOrBlur(value, settings, isFocused) {\r\n if (isFocused) {\r\n return this._roundFormattedValueShownOnFocus(value, settings);\r\n } else {\r\n return this._roundFormattedValueShownOnBlur(value, settings);\r\n }\r\n }\r\n\r\n /**\r\n * Round the input value using the rounding method defined in the settings.\r\n * This function accepts multiple rounding methods. See the documentation for more details about those.\r\n *\r\n * Note : This is handled as text since JavaScript math functions can return inaccurate values.\r\n *\r\n * @param {string|null} inputValue An unformatted numeric value\r\n * @param {object} settings\r\n * @param {int} decimalPlacesToRoundTo\r\n * @returns {*}\r\n */\r\n static _roundValue(inputValue, settings, decimalPlacesToRoundTo) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n if (AutoNumericHelper.isNull(inputValue)) {\r\n // Prevent rounding a `null` value\r\n return inputValue;\r\n }\r\n\r\n //TODO Divide this function to make it easier to understand\r\n inputValue = inputValue === \"\" ? \"0\" : inputValue.toString();\r\n if (\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.toNearest05 ||\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.toNearest05Alt ||\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.upToNext05 ||\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.downToNext05\r\n ) {\r\n return this._roundCloseTo05(inputValue, settings);\r\n }\r\n\r\n const [negativeSign, preparedValue] = AutoNumeric._prepareValueForRounding(inputValue, settings);\r\n inputValue = preparedValue;\r\n\r\n const decimalCharacterPosition = inputValue.lastIndexOf(\".\");\r\n const inputValueHasNoDot = decimalCharacterPosition === -1; // No dot character is found in the `inputValue`\r\n const [integerPart, decimalPart] = inputValue.split(\".\"); // Here the decimal character is always a period '.'\r\n const hasDecimals = decimalPart > 0;\r\n\r\n // If no decimals are detected\r\n if (\r\n !hasDecimals &&\r\n (settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.never ||\r\n settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.floats)\r\n ) {\r\n // If the value decimalPart is only one or more zeroes, then it needs to be removed from the resulting string (cf. issue #652)\r\n return Number(inputValue) === 0 ? integerPart : `${negativeSign}${integerPart}`;\r\n }\r\n\r\n // Else there are some decimal places that may need to be rounded\r\n // Sets the truncate zero method\r\n let temporaryDecimalPlacesOverride;\r\n if (\r\n settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.always ||\r\n settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.floats\r\n ) {\r\n temporaryDecimalPlacesOverride = decimalPlacesToRoundTo;\r\n } else {\r\n temporaryDecimalPlacesOverride = 0;\r\n }\r\n\r\n // Define the decimal position to use (use the very last position if there are no dot in the initial inputValue)\r\n const decimalPositionToUse = inputValueHasNoDot ? inputValue.length - 1 : decimalCharacterPosition;\r\n // Checks decimal places to determine if rounding is required\r\n let checkDecimalPlaces = inputValue.length - 1 - decimalPositionToUse;\r\n let inputValueRounded = \"\";\r\n\r\n // Check if no rounding is required\r\n if (checkDecimalPlaces <= decimalPlacesToRoundTo) {\r\n // Check if we need to pad with zeros\r\n inputValueRounded = inputValue;\r\n if (checkDecimalPlaces < temporaryDecimalPlacesOverride) {\r\n if (inputValueHasNoDot) {\r\n inputValueRounded = `${inputValueRounded}${settings.decimalCharacter}`;\r\n }\r\n\r\n let zeros = \"000000\"; //TODO Change that string with a longer one to prevent having to loop numerous times in the next `while` statement?\r\n while (checkDecimalPlaces < temporaryDecimalPlacesOverride) {\r\n zeros = zeros.substring(0, temporaryDecimalPlacesOverride - checkDecimalPlaces);\r\n inputValueRounded += zeros;\r\n checkDecimalPlaces += zeros.length;\r\n }\r\n } else if (checkDecimalPlaces > temporaryDecimalPlacesOverride) {\r\n inputValueRounded = this._truncateZeros(inputValueRounded, temporaryDecimalPlacesOverride);\r\n } else if (checkDecimalPlaces === 0 && temporaryDecimalPlacesOverride === 0) {\r\n // Remove any trailing dot, if any\r\n inputValueRounded = inputValueRounded.replace(/\\.$/, \"\");\r\n }\r\n\r\n return Number(inputValueRounded) === 0 ? inputValueRounded : `${negativeSign}${inputValueRounded}`;\r\n }\r\n\r\n // Rounded length of the string after rounding\r\n let roundedStrLength;\r\n if (inputValueHasNoDot) {\r\n roundedStrLength = decimalPlacesToRoundTo - 1;\r\n } else {\r\n roundedStrLength = Number(decimalPlacesToRoundTo) + Number(decimalCharacterPosition);\r\n }\r\n\r\n const lastDigit = Number(inputValue.charAt(roundedStrLength + 1));\r\n let inputValueArray = inputValue.substring(0, roundedStrLength + 1).split(\"\");\r\n let odd;\r\n if (inputValue.charAt(roundedStrLength) === \".\") {\r\n odd = inputValue.charAt(roundedStrLength - 1) % 2;\r\n } else {\r\n odd = inputValue.charAt(roundedStrLength) % 2;\r\n }\r\n\r\n if (this._shouldRoundUp(lastDigit, settings, negativeSign, odd)) {\r\n // Round up the last digit if required, and continue until no more 9's are found\r\n for (let i = inputValueArray.length - 1; i >= 0; i -= 1) {\r\n if (inputValueArray[i] !== \".\") {\r\n inputValueArray[i] = +inputValueArray[i] + 1;\r\n if (inputValueArray[i] < 10) {\r\n break;\r\n }\r\n\r\n if (i > 0) {\r\n inputValueArray[i] = \"0\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Reconstruct the string, converting any 10's to 0's\r\n inputValueArray = inputValueArray.slice(0, roundedStrLength + 1);\r\n\r\n // Return the rounded value\r\n inputValueRounded = this._truncateZeros(inputValueArray.join(\"\"), temporaryDecimalPlacesOverride);\r\n\r\n return Number(inputValueRounded) === 0 ? inputValueRounded : `${negativeSign}${inputValueRounded}`;\r\n }\r\n\r\n /**\r\n * Round the `value` when the rounding method deals with '.05'\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {string}\r\n * @private\r\n */\r\n static _roundCloseTo05(value, settings) {\r\n switch (settings.roundingMethod) {\r\n case AutoNumeric.options.roundingMethod.toNearest05:\r\n case AutoNumeric.options.roundingMethod.toNearest05Alt:\r\n value = (Math.round(value * 20) / 20).toString();\r\n break;\r\n case AutoNumeric.options.roundingMethod.upToNext05:\r\n value = (Math.ceil(value * 20) / 20).toString();\r\n break;\r\n default:\r\n value = (Math.floor(value * 20) / 20).toString();\r\n }\r\n\r\n let result;\r\n if (!AutoNumericHelper.contains(value, \".\")) {\r\n result = value + \".00\";\r\n } else if (value.length - value.indexOf(\".\") < 3) {\r\n result = value + \"0\";\r\n } else {\r\n result = value;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Modify the given `value` in order to make it usable for the rest of the rounding function.\r\n * This convert the `value` to a positive one, trim any leading zeros and make sure it does not starts with a leading dot.\r\n *\r\n * @param {string} value The unformatted value\r\n * @param {object} settings\r\n * @returns {[string, string]}\r\n * @private\r\n */\r\n static _prepareValueForRounding(value, settings) {\r\n // Checks if `inputValue` is a negative value\r\n let negativeSign = \"\";\r\n if (AutoNumericHelper.isNegativeStrict(value, \"-\")) {\r\n // The value being unformatted, we check for the minus sign\r\n negativeSign = \"-\";\r\n\r\n // Removes the negative sign that will be added back later if required\r\n value = value.replace(\"-\", \"\");\r\n }\r\n\r\n // Append a zero if the first character is not a digit (then it is likely a dot)\r\n if (!value.match(/^\\d/)) {\r\n value = `0${value}`;\r\n }\r\n\r\n // Determines if the value is equal to zero. If it is, remove the negative sign\r\n if (Number(value) === 0) {\r\n negativeSign = \"\";\r\n }\r\n\r\n // Trims leading zero's as needed\r\n if (\r\n (Number(value) > 0 && settings.leadingZero !== AutoNumeric.options.leadingZero.keep) ||\r\n (value.length > 0 && settings.leadingZero === AutoNumeric.options.leadingZero.allow)\r\n ) {\r\n value = value.replace(/^0*(\\d)/, \"$1\");\r\n }\r\n\r\n return [negativeSign, value];\r\n }\r\n\r\n /**\r\n * Return `true` if a round up should be done given the last digit, the settings and other information about the value.\r\n *\r\n * @param {number} lastDigit\r\n * @param {object} settings\r\n * @param {string} negativeSign This variable comes from `_prepareValueForRounding()`, which return `'-'` if the initial value was negative\r\n * @param {number} odd\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _shouldRoundUp(lastDigit, settings, negativeSign, odd) {\r\n return (\r\n (lastDigit > 4 && settings.roundingMethod === AutoNumeric.options.roundingMethod.halfUpSymmetric) || // Round half up symmetric\r\n (lastDigit > 4 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.halfUpAsymmetric &&\r\n negativeSign === \"\") || // Round half up asymmetric positive values\r\n (lastDigit > 5 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.halfUpAsymmetric &&\r\n negativeSign === \"-\") || // Round half up asymmetric negative values\r\n (lastDigit > 5 && settings.roundingMethod === AutoNumeric.options.roundingMethod.halfDownSymmetric) || // Round half down symmetric\r\n (lastDigit > 5 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.halfDownAsymmetric &&\r\n negativeSign === \"\") || // Round half down asymmetric positive values\r\n (lastDigit > 4 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.halfDownAsymmetric &&\r\n negativeSign === \"-\") || // Round half down asymmetric negative values\r\n (lastDigit > 5 && settings.roundingMethod === AutoNumeric.options.roundingMethod.halfEvenBankersRounding) ||\r\n (lastDigit === 5 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.halfEvenBankersRounding &&\r\n odd === 1) ||\r\n (lastDigit > 0 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.toCeilingTowardPositiveInfinity &&\r\n negativeSign === \"\") ||\r\n (lastDigit > 0 &&\r\n settings.roundingMethod === AutoNumeric.options.roundingMethod.toFloorTowardNegativeInfinity &&\r\n negativeSign === \"-\") ||\r\n (lastDigit > 0 && settings.roundingMethod === AutoNumeric.options.roundingMethod.upRoundAwayFromZero)\r\n ); // Round up away from zero\r\n }\r\n\r\n /**\r\n * Truncates the decimal part of a number to the given number of decimal places `decimalPlacesToRoundTo`.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @param {boolean} isPaste\r\n * @param {int} decimalPlacesToRoundTo\r\n * @returns {*}\r\n */\r\n static _truncateDecimalPlaces(value, settings, isPaste, decimalPlacesToRoundTo) {\r\n if (isPaste) {\r\n value = this._roundFormattedValueShownOnFocus(value, settings);\r\n }\r\n\r\n const [integerPart, decimalPart] = value.split(settings.decimalCharacter);\r\n\r\n // Truncate the decimal part to the satisfying length since we would round it anyway\r\n if (decimalPart && decimalPart.length > decimalPlacesToRoundTo) {\r\n if (decimalPlacesToRoundTo > 0) {\r\n const modifiedDecimalPart = decimalPart.substring(0, decimalPlacesToRoundTo);\r\n value = `${integerPart}${settings.decimalCharacter}${modifiedDecimalPart}`;\r\n } else {\r\n value = integerPart;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Check if the given value is within the `minimumValue` and `maximumValue` range, while using the override options set with `overrideMinMaxLimits`.\r\n * The minimum and maximum limit test results are returned in a array like `[isMinimumLimitRespected, isMaximumLimitRespected]`.\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {[boolean, boolean]}\r\n */\r\n static _checkIfInRangeWithOverrideOption(value, settings) {\r\n if (\r\n (AutoNumericHelper.isNull(value) &&\r\n settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.null) || // When the `null` value is accepted as the `rawValue`, the limits are ignored\r\n settings.overrideMinMaxLimits === AutoNumeric.options.overrideMinMaxLimits.ignore ||\r\n settings.overrideMinMaxLimits === AutoNumeric.options.overrideMinMaxLimits.invalid\r\n ) {\r\n return [true, true];\r\n }\r\n\r\n value = value.toString();\r\n value = value.replace(\",\", \".\");\r\n const minParse = AutoNumericHelper.parseStr(settings.minimumValue);\r\n const maxParse = AutoNumericHelper.parseStr(settings.maximumValue);\r\n const valParse = AutoNumericHelper.parseStr(value);\r\n\r\n let result;\r\n switch (settings.overrideMinMaxLimits) {\r\n case AutoNumeric.options.overrideMinMaxLimits.floor:\r\n result = [AutoNumericHelper.testMinMax(minParse, valParse) > -1, true];\r\n break;\r\n case AutoNumeric.options.overrideMinMaxLimits.ceiling:\r\n result = [true, AutoNumericHelper.testMinMax(maxParse, valParse) < 1];\r\n break;\r\n default:\r\n result = [\r\n AutoNumericHelper.testMinMax(minParse, valParse) > -1,\r\n AutoNumericHelper.testMinMax(maxParse, valParse) < 1\r\n ];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns `true` if the given value is within the `minimumValue` and `maximumValue` limits, while using the override options set with `overrideMinMaxLimits`, `false` otherwise\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isWithinRangeWithOverrideOption(value, settings) {\r\n const [minTest, maxTest] = this._checkIfInRangeWithOverrideOption(value, settings);\r\n\r\n return minTest && maxTest;\r\n }\r\n\r\n /**\r\n * Helper function that prepares the value string for the min/max test\r\n *\r\n * @param {string} value\r\n * @returns {{}}\r\n * @private\r\n */\r\n static _cleanValueForRangeParse(value) {\r\n value = value.toString().replace(\",\", \".\");\r\n\r\n return AutoNumericHelper.parseStr(value);\r\n }\r\n\r\n /**\r\n * Returns `true` is the value is superior or equal to the `minimumValue` limit, discarding any override options\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isMinimumRangeRespected(value, settings) {\r\n return (\r\n AutoNumericHelper.testMinMax(\r\n AutoNumericHelper.parseStr(settings.minimumValue),\r\n this._cleanValueForRangeParse(value)\r\n ) > -1\r\n );\r\n }\r\n\r\n /**\r\n * Returns `true` is the value is inferior or equal to the `maximumValue` limit, discarding any override options\r\n *\r\n * @param {string} value\r\n * @param {object} settings\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _isMaximumRangeRespected(value, settings) {\r\n return (\r\n AutoNumericHelper.testMinMax(\r\n AutoNumericHelper.parseStr(settings.maximumValue),\r\n this._cleanValueForRangeParse(value)\r\n ) < 1\r\n );\r\n }\r\n\r\n /**\r\n * Helper function that triggers the range events if they are needed\r\n *\r\n * @param {boolean} minTest\r\n * @param {boolean} maxTest\r\n * @private\r\n */\r\n _triggerRangeEvents(minTest, maxTest) {\r\n if (!minTest) {\r\n this._triggerEvent(AutoNumeric.events.minRangeExceeded, this.domElement);\r\n }\r\n\r\n if (!maxTest) {\r\n this._triggerEvent(AutoNumeric.events.maxRangeExceeded, this.domElement);\r\n }\r\n }\r\n\r\n /**\r\n * Set the invalid state on the AutoNumeric element.\r\n * If the element is not an input, and therefore a contenteditable-enabled element, its validity state cannot be changed.\r\n * In that case, the invalid css class defined with the `settings.invalidClass` option is added to the element.\r\n * The 'autoNumeric:invalidValue' event is always sent when this function is called.\r\n *\r\n * @private\r\n */\r\n _setInvalidState() {\r\n if (this.isInputElement) {\r\n AutoNumericHelper.setInvalidState(this.domElement);\r\n } else {\r\n this._addCSSClass(this.settings.invalidClass);\r\n }\r\n\r\n this._triggerEvent(AutoNumeric.events.invalidValue, this.domElement);\r\n this.validState = false;\r\n }\r\n\r\n /**\r\n * Set the valid state on the AutoNumeric element.\r\n * If the element is not an input, and therefore a contenteditable-enabled element, its validity state cannot be changed.\r\n * In that case, the invalid css class defined with the `settings.invalidClass` option is removed.\r\n * The 'autoNumeric:correctedValue' event is sent if the element state is invalid when this is called.\r\n *\r\n * @private\r\n */\r\n _setValidState() {\r\n if (this.isInputElement) {\r\n AutoNumericHelper.setValidState(this.domElement);\r\n } else {\r\n this._removeCSSClass(this.settings.invalidClass);\r\n }\r\n\r\n if (!this.validState) {\r\n this._triggerEvent(AutoNumeric.events.correctedValue, this.domElement);\r\n }\r\n\r\n this.validState = true;\r\n }\r\n\r\n /**\r\n * Sets the valid or invalid state on the DOM element, if the value is within the range set by the minimum and maximum value\r\n *\r\n * @param {string} value\r\n * @private\r\n */\r\n _setValidOrInvalidState(value) {\r\n if (this.settings.overrideMinMaxLimits === AutoNumeric.options.overrideMinMaxLimits.invalid) {\r\n const minRangeOk = this.constructor._isMinimumRangeRespected(value, this.settings);\r\n const maxRangeOk = this.constructor._isMaximumRangeRespected(value, this.settings);\r\n\r\n if (minRangeOk && maxRangeOk) {\r\n this._setValidState();\r\n } else {\r\n this._setInvalidState();\r\n }\r\n\r\n this._triggerRangeEvents(minRangeOk, maxRangeOk);\r\n }\r\n }\r\n\r\n /**\r\n * Original settings saved for use when the `decimalPlacesShownOnFocus` and `showOnlyNumbersOnFocus` options are used.\r\n * Those original settings are used exclusively in the `focusin` and `focusout` event handlers.\r\n */\r\n _keepAnOriginalSettingsCopy() {\r\n this.originalDigitGroupSeparator = this.settings.digitGroupSeparator;\r\n this.originalCurrencySymbol = this.settings.currencySymbol;\r\n this.originalSuffixText = this.settings.suffixText;\r\n }\r\n\r\n /**\r\n * Original settings saved for use when `decimalPlacesShownOnFocus` & `showOnlyNumbersOnFocus` options are being used.\r\n * This is taken from Quirksmode.\r\n *\r\n * @param {string} name\r\n * @returns {*}\r\n */\r\n static _readCookie(name) {\r\n const nameEQ = name + \"=\";\r\n const ca = document.cookie.split(\";\");\r\n let c = \"\";\r\n for (let i = 0; i < ca.length; i += 1) {\r\n c = ca[i];\r\n while (c.charAt(0) === \" \") {\r\n c = c.substring(1, c.length);\r\n }\r\n if (c.indexOf(nameEQ) === 0) {\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Test if sessionStorage is supported.\r\n * This is taken from Modernizr.\r\n *\r\n * @returns {boolean}\r\n */\r\n static _storageTest() {\r\n const mod = \"modernizr\";\r\n try {\r\n sessionStorage.setItem(mod, mod);\r\n sessionStorage.removeItem(mod);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Removes any zeros in excess in the front and back of the given `value`, according to the `settings`.\r\n * This also manages the cases where the decimal point is on the far left or far right of the `value`.\r\n *\r\n * @param {string} value\r\n * @returns {string|null}\r\n */\r\n _trimLeadingAndTrailingZeros(value) {\r\n // Return the empty string is the value is already empty. This prevent converting that value to '0'.\r\n if (value === \"\" || value === null) {\r\n return value;\r\n }\r\n\r\n if (this.settings.leadingZero !== AutoNumeric.options.leadingZero.keep) {\r\n if (Number(value) === 0) {\r\n // Return '0' if the value is zero\r\n return \"0\";\r\n }\r\n\r\n // Trim the leading zeros, while leaving one zero to the left of the decimal point if needed\r\n value = value.replace(/^(-)?0+(?=\\d)/g, \"$1\");\r\n }\r\n\r\n //TODO remove this from that function and use `trimPaddedZerosFromDecimalPlaces()` instead\r\n // Trim the trailing zeros after the last decimal place not being a zero (ie. 1.2300 -> 1.23)\r\n if (AutoNumericHelper.contains(value, \".\")) {\r\n value = value.replace(/(\\.[0-9]*?)0+$/, \"$1\");\r\n }\r\n\r\n // Remove any trailing decimal point\r\n value = value.replace(/\\.$/, \"\");\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Generate the name for the persistent stored data variable\r\n * @private\r\n */\r\n _setPersistentStorageName() {\r\n if (this.settings.saveValueToSessionStorage) {\r\n if (this.domElement.name !== \"\" && !AutoNumericHelper.isUndefined(this.domElement.name)) {\r\n this.rawValueStorageName = `${this.storageNamePrefix}${decodeURIComponent(this.domElement.name)}`;\r\n } else {\r\n this.rawValueStorageName = `${this.storageNamePrefix}${this.domElement.id}`;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Save the raw Value into sessionStorage or a cookie depending on what the browser is supporting.\r\n * @private\r\n */\r\n _saveValueToPersistentStorage() {\r\n if (this.settings.saveValueToSessionStorage) {\r\n if (this.sessionStorageAvailable) {\r\n sessionStorage.setItem(this.rawValueStorageName, this.rawValue);\r\n } else {\r\n // Use cookies for obsolete browsers that do not support sessionStorage (ie. IE 6 & 7)\r\n document.cookie = `${this.rawValueStorageName}=${this.rawValue}; expires= ; path=/`;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieve the raw value from sessionStorage or the cookie depending on what the browser is supporting.\r\n *\r\n * @returns {*}\r\n * @private\r\n */\r\n _getValueFromPersistentStorage() {\r\n if (this.settings.saveValueToSessionStorage) {\r\n let result;\r\n if (this.sessionStorageAvailable) {\r\n result = sessionStorage.getItem(this.rawValueStorageName);\r\n } else {\r\n result = this.constructor._readCookie(this.rawValueStorageName);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n AutoNumericHelper.warning(\r\n \"`_getValueFromPersistentStorage()` is called but `settings.saveValueToSessionStorage` is false. There must be an error that needs fixing.\",\r\n this.settings.showWarnings\r\n );\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove the raw value data from sessionStorage or the cookie depending on what the browser is supporting.\r\n * @private\r\n */\r\n _removeValueFromPersistentStorage() {\r\n if (this.settings.saveValueToSessionStorage) {\r\n if (this.sessionStorageAvailable) {\r\n sessionStorage.removeItem(this.rawValueStorageName);\r\n } else {\r\n const date = new Date();\r\n date.setTime(date.getTime() - 86400000); // -86400000 === -1 * 24 * 60 * 60 * 1000\r\n const expires = `; expires=${date.toUTCString()}`;\r\n document.cookie = `${this.rawValueStorageName}='' ;${expires}; path=/`;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the default value from the html `value` attribute.\r\n * Return the empty string if such attribute is not found.\r\n *\r\n * @param {HTMLElement} domElement\r\n *\r\n * @returns {string}\r\n * @private\r\n */\r\n _getDefaultValue(domElement) {\r\n // Get the default html value\r\n // Note: we do not use the simpler `return domElement.defaultValue;` code since the given domElement can sometime be a `contenteditable` element which does not support the `defaultValue` attribute.\r\n const value = domElement.getAttribute(\"value\");\r\n\r\n if (AutoNumericHelper.isNull(value)) {\r\n return \"\";\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Handler for 'focusin' and 'mouseenter' events\r\n * On focusin, multiple things happens :\r\n * - If `Alt` is pressed, unformat\r\n * - Remove the separators if `showOnlyNumbersOnFocus` is set\r\n * - Depending on `emptyInputBehavior`, reformat the empty formatted value\r\n * - Display the correct number of decimal places (on focus/blur)\r\n * - Place the caret correctly if the element is empty\r\n *\r\n * Note: On focusin, the `rawValue` is never changed. Only the formatted value can be modified.\r\n *\r\n * @param {KeyboardEvent|MouseEvent} e\r\n * @private\r\n */\r\n _onFocusInAndMouseEnter(e) {\r\n //TODO Create separate handlers for the focus and mouseenter events\r\n this.isEditing = false; // Just in case no `keyUp` event have been sent (ie. if the user lost the focus from the current window while typing)\r\n\r\n if (!this.formulaMode && this.settings.unformatOnHover && e.type === \"mouseenter\" && e.altKey) {\r\n this.constructor._unformatAltHovered(this);\r\n\r\n return;\r\n }\r\n\r\n if (e.type === \"focus\") {\r\n //TODO Move that back to the 'focus' event handler when the separation between the 'focus' and 'mouseenter' handler will be done\r\n // Keep track if the element is currently focused\r\n this.isFocused = true;\r\n this.rawValueOnFocus = this.rawValue; // Keep track of the initial rawValue. This is needed to define if a change event must be dispatched later\r\n }\r\n\r\n if (e.type === \"focus\" && this.settings.unformatOnHover && this.hoveredWithAlt) {\r\n this.constructor._reformatAltHovered(this);\r\n }\r\n\r\n if (e.type === \"focus\" || (e.type === \"mouseenter\" && !this.isFocused)) {\r\n let elementValueToSet = null; // Store the value we want to set on the element, and only call `_setElementValue()` once\r\n\r\n if (\r\n this.settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.focus &&\r\n this.rawValue < 0 &&\r\n this.settings.negativeBracketsTypeOnBlur !== null &&\r\n this.settings.isNegativeSignAllowed\r\n ) {\r\n //FIXME this is called a second time in _addGroupSeparators too. Prevent this, if possible.\r\n // Only remove the brackets if the value is negative\r\n elementValueToSet = this.constructor._removeBrackets(\r\n AutoNumericHelper.getElementValue(this.domElement),\r\n this.settings\r\n );\r\n //FIXME The element value is set here, why continue and set it again later in that same parent logic block?\r\n }\r\n\r\n // Use the `rawValue`, multiplied by `rawValueDivisor` if defined\r\n const rawValueToFormat = this._getRawValueToFormat(this.rawValue);\r\n\r\n // Modify the element value according to the number of decimal places to show on focus or the `showOnlyNumbersOnFocus` option\r\n if (rawValueToFormat !== \"\") {\r\n // Round the given value according to the object state (focus/unfocused)\r\n const roundedValue = this.constructor._roundFormattedValueShownOnFocusOrBlur(\r\n rawValueToFormat,\r\n this.settings,\r\n this.isFocused\r\n );\r\n\r\n if (this.settings.showOnlyNumbersOnFocus === AutoNumeric.options.showOnlyNumbersOnFocus.onlyNumbers) {\r\n //TODO Use a `this.settingsOverride` object instead of modifying the `this.settings` object\r\n this.settings.digitGroupSeparator = \"\";\r\n this.settings.currencySymbol = \"\";\r\n this.settings.suffixText = \"\";\r\n elementValueToSet = roundedValue.replace(\".\", this.settings.decimalCharacter);\r\n } else {\r\n let formattedValue;\r\n if (AutoNumericHelper.isNull(roundedValue)) {\r\n formattedValue = \"\";\r\n } else {\r\n formattedValue = this.constructor._addGroupSeparators(\r\n roundedValue.replace(\".\", this.settings.decimalCharacter),\r\n this.settings,\r\n this.isFocused,\r\n rawValueToFormat\r\n );\r\n }\r\n\r\n elementValueToSet = formattedValue;\r\n }\r\n }\r\n\r\n // In order to send a 'native' change event when blurring the input, we need to first store the initial input value on focus.\r\n if (AutoNumericHelper.isNull(elementValueToSet)) {\r\n this.valueOnFocus = \"\";\r\n } else {\r\n this.valueOnFocus = elementValueToSet;\r\n }\r\n\r\n this.lastVal = this.valueOnFocus;\r\n const isEmptyValue = this.constructor._isElementValueEmptyOrOnlyTheNegativeSign(this.valueOnFocus, this.settings);\r\n const orderedValue = this.constructor._orderValueCurrencySymbolAndSuffixText(\r\n this.valueOnFocus,\r\n this.settings,\r\n true\r\n ); // This displays the currency sign on hover even if the rawValue is empty\r\n const orderedValueTest =\r\n isEmptyValue &&\r\n orderedValue !== \"\" &&\r\n this.settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.focus;\r\n if (orderedValueTest) {\r\n elementValueToSet = orderedValue;\r\n }\r\n\r\n if (!AutoNumericHelper.isNull(elementValueToSet)) {\r\n this._setElementValue(elementValueToSet);\r\n }\r\n\r\n if (\r\n orderedValueTest &&\r\n orderedValue === this.settings.currencySymbol &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix\r\n ) {\r\n // If there is a currency symbol and its on the right hand side, then we place the caret accordingly on the far left side\r\n AutoNumericHelper.setElementSelection(e.target, 0);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handler for the 'focus' event.\r\n * We update the info of the focused state in the `this.isFocused` variable when the element gets focused.\r\n * @private\r\n */\r\n _onFocus() {\r\n if (this.settings.isCancellable) {\r\n // Save the current unformatted value for later use by the 'cancellable' feature\r\n this._saveCancellableValue();\r\n }\r\n }\r\n\r\n /**\r\n * Handler for the 'focusin' event.\r\n * This is called before the 'focus' event, and is necessary to change the selection on focus under Firefox for instance.\r\n *\r\n * @param {Event} e\r\n * @private\r\n */\r\n _onFocusIn(e) {\r\n if (this.settings.selectOnFocus) {\r\n // The whole input content is selected on focus (following the `selectOnFocus` and `selectNumberOnly` options)\r\n //XXX Firefox <47 does not respect this selection...Oh well.\r\n this.select();\r\n } else {\r\n // Or we decide where to put the caret using the `caretPositionOnFocus` option\r\n if (!AutoNumericHelper.isNull(this.settings.caretPositionOnFocus)) {\r\n AutoNumericHelper.setElementSelection(\r\n e.target,\r\n this._initialCaretPosition(AutoNumericHelper.getElementValue(this.domElement))\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Enter the special 'formula mode' where users can enter a math expression that will be evaluated on blur and `enter`\r\n * @private\r\n */\r\n _enterFormulaMode() {\r\n if (this.settings.formulaMode) {\r\n this.formulaMode = true; // 'Deactivate' the normal event listeners behavior\r\n // Clear the input and add a '=' sign to it\r\n AutoNumericHelper.setElementValue(this.domElement, \"=\");\r\n // Put the caret after the `=` character\r\n AutoNumericHelper.setElementSelection(this.domElement, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Exit the formula mode\r\n * Tries to parse and evaluate the math expression, then `set()` the result if it's correct, otherwise reformat with the previous `rawValue`\r\n * @private\r\n */\r\n _exitFormulaMode() {\r\n // Parse the formula\r\n let formula = AutoNumericHelper.getElementValue(this.domElement);\r\n formula = formula.replace(/^\\s*=/, \"\"); // Remove all the leading whitespaces and the equal sign from the formula\r\n let result;\r\n try {\r\n const ast = new Parser(formula, this.settings.decimalCharacter);\r\n result = new Evaluator().evaluate(ast);\r\n } catch (e) {\r\n // Error when parsing the math expression\r\n this._triggerEvent(AutoNumeric.events.invalidFormula, this.domElement, {\r\n formula,\r\n aNElement: this\r\n });\r\n this.reformat();\r\n this.formulaMode = false;\r\n\r\n return;\r\n }\r\n\r\n // The math expression is correctly parsed\r\n this._triggerEvent(AutoNumeric.events.validFormula, this.domElement, {\r\n formula,\r\n result,\r\n aNElement: this\r\n });\r\n this.set(result); // Note: we can have a valid formula, but an invalid value (ie. out of the min/max range)\r\n this.formulaMode = false;\r\n }\r\n\r\n /**\r\n * Returns `true` if the non printable key is accepted in formula mode\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _acceptNonPrintableKeysInFormulaMode() {\r\n return (\r\n this.eventKey === AutoNumericEnum.keyName.Backspace ||\r\n this.eventKey === AutoNumericEnum.keyName.Delete ||\r\n this.eventKey === AutoNumericEnum.keyName.LeftArrow ||\r\n this.eventKey === AutoNumericEnum.keyName.RightArrow ||\r\n this.eventKey === AutoNumericEnum.keyName.Home ||\r\n this.eventKey === AutoNumericEnum.keyName.End\r\n );\r\n }\r\n\r\n /**\r\n * Handler for 'keydown' events.\r\n * The user just started pushing any key, hence one event is sent.\r\n *\r\n * Note :\r\n * By default a 'normal' input output those events in the right order when inputting a character key (ie. 'a') :\r\n * - keydown\r\n * - keypress\r\n * - input\r\n * - keyup\r\n *\r\n * ...when inputting a modifier key (ie. 'ctrl') :\r\n * - keydown\r\n * - keyup\r\n *\r\n * If 'delete' or 'backspace' are entered 'normally', the following events are sent :\r\n * - keydown\r\n * - input\r\n * - keyup\r\n *\r\n * If 'delete' or 'backspace' are entered continuously (with the key still pressed), the following events are sent :\r\n * - keydown\r\n * - input\r\n * [- keydown\r\n * - input] x times\r\n * - keyup\r\n *\r\n * If 'enter' is entered and the value has not changed, the following events are sent :\r\n * - keydown\r\n * - keypress\r\n * - keyup\r\n *\r\n * If 'enter' is entered and the value has been changed, the following events are sent :\r\n * - keydown\r\n * - keypress\r\n * - change\r\n * - keyup\r\n *\r\n * When a paste is done, the following events are sent :\r\n * - input (if paste is done with the mouse)\r\n *\r\n * - keydown (if paste is done with ctrl+v)\r\n * - keydown\r\n * - input\r\n * - keyup\r\n * - keyup\r\n *\r\n * @param {KeyboardEvent} e\r\n */\r\n _onKeydown(e) {\r\n this.formatted = false; // Keep track if the element has been formatted already. If that's the case, prevent further format calculations.\r\n this.isEditing = true; // Keep track if the user is currently editing the element manually\r\n\r\n if (\r\n !this.formulaMode &&\r\n !this.isFocused &&\r\n this.settings.unformatOnHover &&\r\n e.altKey &&\r\n this.domElement === AutoNumericHelper.getHoveredElement()\r\n ) {\r\n // Here I prevent calling _unformatAltHovered if the element is already focused, since the global 'keydown' listener will pick it up as well\r\n this.constructor._unformatAltHovered(this);\r\n\r\n return;\r\n }\r\n\r\n this._updateEventKeyInfo(e);\r\n\r\n this.keydownEventCounter += 1; // Every time the keydown event is caught, increment the counter to keep track if the key is continuously pressed\r\n if (this.keydownEventCounter === 1) {\r\n this.initialValueOnFirstKeydown = AutoNumericHelper.getElementValue(e.target); // This is needed in `onKeyup()` to check if the value as changed during the key press\r\n this.initialRawValueOnFirstKeydown = this.rawValue;\r\n }\r\n\r\n if (this.formulaMode) {\r\n if (this.eventKey === AutoNumericEnum.keyName.Esc) {\r\n // Cancel the formula\r\n this.formulaMode = false;\r\n this.reformat();\r\n\r\n return;\r\n }\r\n\r\n if (this.eventKey === AutoNumericEnum.keyName.Enter) {\r\n // Calculate the formula\r\n this._exitFormulaMode();\r\n\r\n return;\r\n }\r\n\r\n // Accept the backspace, delete, arrow, home and end keys\r\n if (this._acceptNonPrintableKeysInFormulaMode()) {\r\n return;\r\n }\r\n\r\n //TODO Manage the undo/redo events *while* editing a math expression\r\n //TODO Manage the cut/paste events *while* editing a math expression\r\n } else if (this.eventKey === AutoNumericEnum.keyName.Equal) {\r\n this._enterFormulaMode();\r\n\r\n return;\r\n }\r\n\r\n if (this.domElement.readOnly || this.settings.readOnly || this.domElement.disabled) {\r\n this.processed = true;\r\n\r\n return;\r\n }\r\n\r\n if (this.eventKey === AutoNumericEnum.keyName.Esc) {\r\n //XXX The default 'Escape' key behavior differs between Firefox and Chrome, Firefox already having a built-in 'cancellable-like' feature. This is why we call `e.preventDefault()` here instead of just when `isCancellable` is set to `true`. This allow us to keep the same behavior across browsers.\r\n e.preventDefault();\r\n\r\n if (this.settings.isCancellable) {\r\n // If the user wants to cancel his modifications:\r\n // We set back the saved value\r\n if (this.rawValue !== this.savedCancellableValue) {\r\n // Do not set the value again if it has not changed\r\n this.set(this.savedCancellableValue);\r\n // And we need to send an 'input' event when setting back the initial value in order to make other scripts aware of the value change...\r\n this._triggerEvent(AutoNumeric.events.native.input, e.target);\r\n }\r\n }\r\n\r\n // ..and lastly we update the caret selection, even if the option `isCancellable` is false\r\n this.select();\r\n //TODO Add an option to select either the integer or decimal part with `Esc`\r\n }\r\n\r\n // The \"enter\" key throws a `change` event if the raw value has changed since the `focus` event\r\n let targetValue = AutoNumericHelper.getElementValue(e.target);\r\n if (this.eventKey === AutoNumericEnum.keyName.Enter && this.rawValue !== this.rawValueOnFocus) {\r\n this._triggerEvent(AutoNumeric.events.native.change, e.target);\r\n this.valueOnFocus = targetValue;\r\n this.rawValueOnFocus = this.rawValue;\r\n\r\n if (this.settings.isCancellable) {\r\n // If the user activated the 'cancellable' feature, we save the validated value when 'Enter' is hit\r\n this._saveCancellableValue();\r\n }\r\n }\r\n\r\n this._updateInternalProperties(e);\r\n\r\n if (this._processNonPrintableKeysAndShortcuts(e)) {\r\n this.processed = true;\r\n\r\n return;\r\n }\r\n\r\n // Check if the key is a delete/backspace key\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace || this.eventKey === AutoNumericEnum.keyName.Delete) {\r\n const isDeletionAllowed = this._processCharacterDeletion(); // Because backspace and delete only triggers keydown and keyup events, not keypress\r\n this.processed = true;\r\n if (!isDeletionAllowed) {\r\n // Prevent the deletion if `overrideMinMaxLimits` option is `doNotOverride` and the result goes out of the allowed range\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n this._formatValue(e);\r\n\r\n // If and only if the resulting value has changed after that backspace/delete, then we have to send an 'input' event like browsers normally do.\r\n targetValue = AutoNumericHelper.getElementValue(e.target); // Update the value since it could have been changed during the deletion\r\n if (targetValue !== this.lastVal && this.throwInput) {\r\n // Throw an input event when a character deletion is detected\r\n this._triggerEvent(AutoNumeric.events.native.input, e.target);\r\n e.preventDefault(); // ...and immediately prevent the browser to delete a second character\r\n }\r\n\r\n this.lastVal = targetValue;\r\n this.throwInput = true;\r\n }\r\n }\r\n\r\n /**\r\n * Handler for 'keypress' events.\r\n * The user is still pressing the key, which will output a character (ie. '2') continuously until he releases the key.\r\n * Note: 'keypress' events are not sent for delete keys like Backspace/Delete.\r\n *\r\n * @param {KeyboardEvent} e\r\n */\r\n _onKeypress(e) {\r\n if (this.formulaMode) {\r\n // Accept the backspace, delete, arrow, home and end keys\r\n if (this._acceptNonPrintableKeysInFormulaMode()) {\r\n return;\r\n }\r\n\r\n //TODO Prevent keys to be entered on the left-hand side of the '=' sign?...Or just let the user see what they are wrongly doing?\r\n if (this.settings.formulaChars.test(this.eventKey)) {\r\n // Accept the custom decimal character too\r\n return; // Accept the key in the formula (and do not accept the '=' character here again)\r\n } else {\r\n e.preventDefault(); // Reject the key\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this.eventKey === AutoNumericEnum.keyName.Insert) {\r\n return;\r\n }\r\n\r\n const processed = this.processed;\r\n this._updateInternalProperties(e);\r\n\r\n if (this._processNonPrintableKeysAndShortcuts(e)) {\r\n return;\r\n }\r\n\r\n if (processed) {\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n const isCharacterInsertionAllowed = this._processCharacterInsertion();\r\n if (isCharacterInsertionAllowed) {\r\n this._formatValue(e);\r\n const targetValue = AutoNumericHelper.getElementValue(e.target);\r\n if (targetValue !== this.lastVal && this.throwInput) {\r\n // Throws input event on adding a character\r\n this._triggerEvent(AutoNumeric.events.native.input, e.target);\r\n e.preventDefault(); // ...and immediately prevent the browser to add a second character\r\n } else {\r\n if (\r\n (this.eventKey === this.settings.decimalCharacter ||\r\n this.eventKey === this.settings.decimalCharacterAlternative) &&\r\n AutoNumericHelper.getElementSelection(e.target).start ===\r\n AutoNumericHelper.getElementSelection(e.target).end &&\r\n AutoNumericHelper.getElementSelection(e.target).start === targetValue.indexOf(this.settings.decimalCharacter)\r\n ) {\r\n const position = AutoNumericHelper.getElementSelection(e.target).start + 1;\r\n AutoNumericHelper.setElementSelection(e.target, position);\r\n }\r\n\r\n e.preventDefault();\r\n }\r\n\r\n this.lastVal = AutoNumericHelper.getElementValue(e.target);\r\n this.throwInput = true;\r\n\r\n this._setValidOrInvalidState(this.rawValue); // Updates the valid state as soon as the number is entered (in the case where the user keeps pressing the number key)\r\n\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n }\r\n\r\n /**\r\n * Handler for 'keyup' events.\r\n * The user just released any key, hence one event is sent.\r\n *\r\n * @param {KeyboardEvent} e\r\n */\r\n _onKeyup(e) {\r\n this.isEditing = false;\r\n this.keydownEventCounter = 0; // Reset the keydown events counter\r\n\r\n if (this.formulaMode) {\r\n return;\r\n }\r\n\r\n if (this.settings.isCancellable && this.eventKey === AutoNumericEnum.keyName.Esc) {\r\n // If the user wants to cancel its modifications, we drop the 'keyup' event for the Esc key\r\n e.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n // Manage the undo/redo events\r\n if (this.eventKey === AutoNumericEnum.keyName.Z || this.eventKey === AutoNumericEnum.keyName.z) {\r\n if (e.ctrlKey && e.shiftKey) {\r\n // Redo\r\n e.preventDefault();\r\n this._historyTableRedo();\r\n this.onGoingRedo = true;\r\n\r\n return;\r\n } else if (e.ctrlKey && !e.shiftKey) {\r\n if (this.onGoingRedo) {\r\n // Prevent an 'undo' to be launch when releasing the shift key before the ctrl key after a 'redo' shortcut\r\n this.onGoingRedo = false;\r\n } else {\r\n e.preventDefault();\r\n // Undo\r\n this._historyTableUndo();\r\n\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (this.onGoingRedo && (e.ctrlKey || e.shiftKey)) {\r\n // Special case where if the user has entered `Control+Shift+z`, then release `z`, keeping `Control` or `Shift` pressed, then `this.onGoingRedo` is never changed back to `false` when the user release `Control` or `Shift`\r\n this.onGoingRedo = false;\r\n }\r\n\r\n // Manage the Cut event\r\n if ((e.ctrlKey || e.metaKey) && this.eventKey === AutoNumericEnum.keyName.x) {\r\n // Save the caret position at the start of the selection\r\n const caretPosition = AutoNumericHelper.getElementSelection(this.domElement).start;\r\n // Convert the remaining 'formatted' numbers in a Js number\r\n const cutNumber = this.constructor._toNumericValue(AutoNumericHelper.getElementValue(e.target), this.settings);\r\n // Try to set that value with `set()`\r\n this.set(cutNumber);\r\n // Set back the initial caret position\r\n this._setCaretPosition(caretPosition);\r\n }\r\n\r\n // Manage the reformat when hovered with the Alt key pressed\r\n if (this.eventKey === AutoNumericEnum.keyName.Alt && this.settings.unformatOnHover && this.hoveredWithAlt) {\r\n this.constructor._reformatAltHovered(this);\r\n\r\n return;\r\n }\r\n\r\n // Manage the Backspace and Delete keys when used in combination with the control key (fix #656)\r\n if (\r\n (e.ctrlKey || e.metaKey) &&\r\n (this.eventKey === AutoNumericEnum.keyName.Backspace || this.eventKey === AutoNumericEnum.keyName.Delete)\r\n ) {\r\n const targetValue = AutoNumericHelper.getElementValue(e.target);\r\n this._setRawValue(this._formatOrUnformatOther(false, targetValue));\r\n\r\n return;\r\n }\r\n\r\n this._updateInternalProperties(e);\r\n\r\n const skip = this._processNonPrintableKeysAndShortcuts(e);\r\n delete this.valuePartsBeforePaste;\r\n const targetValue = AutoNumericHelper.getElementValue(e.target);\r\n if (skip || (targetValue === \"\" && this.initialValueOnFirstKeydown === \"\")) {\r\n // If the user enters skippable keys, or keeps deleting/backspacing into the empty input, no 'formatted' event are sent (cf. issue #621)\r\n return;\r\n }\r\n\r\n // Added to properly place the caret when only the currency sign is present\r\n if (targetValue === this.settings.currencySymbol) {\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n AutoNumericHelper.setElementSelection(e.target, 0);\r\n } else {\r\n AutoNumericHelper.setElementSelection(e.target, this.settings.currencySymbol.length);\r\n }\r\n } else if (this.eventKey === AutoNumericEnum.keyName.Tab) {\r\n AutoNumericHelper.setElementSelection(e.target, 0, targetValue.length);\r\n }\r\n\r\n if (\r\n targetValue === this.settings.suffixText ||\r\n (this.rawValue === \"\" && this.settings.currencySymbol !== \"\" && this.settings.suffixText !== \"\")\r\n ) {\r\n AutoNumericHelper.setElementSelection(e.target, 0);\r\n }\r\n\r\n // Saves the extended decimal to preserve the data when navigating away from the page\r\n if (this.settings.decimalPlacesShownOnFocus !== null) {\r\n this._saveValueToPersistentStorage();\r\n }\r\n\r\n if (!this.formatted) {\r\n //TODO Is this line needed? Considering that onKeydown and onKeypress both finish by setting it to false...\r\n this._formatValue(e);\r\n }\r\n\r\n this._setValidOrInvalidState(this.rawValue);\r\n\r\n // Force the `rawValue` update on Android Chrome\r\n this._saveRawValueForAndroid();\r\n\r\n // If the input value has changed during the key press event chain, an event is sent to alert that a formatting has been done (cf. Issue #187)\r\n if (targetValue !== this.initialValueOnFirstKeydown) {\r\n // Checking the value that were saved after the very first keydown event ensure that the 'formatted' event will be sent even if the user continuously press the Delete/Backspace key\r\n this._triggerEvent(AutoNumeric.events.formatted, e.target, {\r\n oldValue: this.initialValueOnFirstKeydown,\r\n newValue: targetValue,\r\n oldRawValue: this.initialRawValueOnFirstKeydown,\r\n newRawValue: this.rawValue,\r\n isPristine: this.isPristine(false),\r\n error: null,\r\n aNElement: this\r\n });\r\n }\r\n\r\n // Update the selection of the current element of the history table\r\n if (this.historyTable.length > 1) {\r\n const selection = AutoNumericHelper.getElementSelection(this.domElement);\r\n this.selectionStart = selection.start;\r\n this.selectionEnd = selection.end;\r\n this.historyTable[this.historyTableIndex].start = this.selectionStart;\r\n this.historyTable[this.historyTableIndex].end = this.selectionEnd;\r\n }\r\n }\r\n\r\n /**\r\n * On Android Chrome, the `rawValue` is not updated when the user changes the input value.\r\n * This function updates the `rawValue` accordingly.\r\n * @private\r\n */\r\n _saveRawValueForAndroid() {\r\n if (this.eventKey === AutoNumericEnum.keyName.AndroidDefault) {\r\n let normalizedValue = this.constructor._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n this.getFormatted(),\r\n this.settings,\r\n true,\r\n this.isFocused\r\n );\r\n normalizedValue = this.constructor._convertToNumericString(normalizedValue, this.settings);\r\n\r\n this._setRawValue(normalizedValue);\r\n }\r\n }\r\n\r\n /**\r\n * Handler for 'focusout' events\r\n * On focusout, multiple things happens :\r\n * - The element value is formatted back if the `Alt` key was pressed,\r\n * - The element value is formatted back if `showOnlyNumbersOnFocus` was set to only show numbers,\r\n * - The element value is multiplied by `rawValueDivisor` on `blur`\r\n *\r\n * Note: On focusout, the `rawValue` is never changed. Only the formatted value can be modified.\r\n *\r\n * @param {Event} e\r\n */\r\n _onFocusOutAndMouseLeave(e) {\r\n //TODO Create separate handlers for blur and mouseleave\r\n this.isEditing = false; // Just in case no `keyUp` event have been sent (if the user lost the focus on the window while typing)\r\n\r\n if (e.type === \"mouseleave\" && this.formulaMode) {\r\n return;\r\n }\r\n\r\n //FIXME Do not call `set()` if the current raw value is the same as the one we are trying to set (currently, on focus out, `set()` is always called, even if the value has not changed\r\n if (this.settings.unformatOnHover && e.type === \"mouseleave\" && this.hoveredWithAlt) {\r\n this.constructor._reformatAltHovered(this);\r\n\r\n return;\r\n }\r\n\r\n if ((e.type === \"mouseleave\" && !this.isFocused) || e.type === \"blur\") {\r\n if (e.type === \"blur\" && this.formulaMode) {\r\n this._exitFormulaMode();\r\n }\r\n\r\n this._saveValueToPersistentStorage();\r\n if (this.settings.showOnlyNumbersOnFocus === AutoNumeric.options.showOnlyNumbersOnFocus.onlyNumbers) {\r\n this.settings.digitGroupSeparator = this.originalDigitGroupSeparator;\r\n this.settings.currencySymbol = this.originalCurrencySymbol;\r\n this.settings.suffixText = this.originalSuffixText;\r\n }\r\n\r\n // Use the rawValue, multiplied by `rawValueDivisor` if defined\r\n const rawValueToFormat = this._getRawValueToFormat(this.rawValue);\r\n const isRawValueNull = AutoNumericHelper.isNull(rawValueToFormat);\r\n const [minTest, maxTest] = this.constructor._checkIfInRangeWithOverrideOption(rawValueToFormat, this.settings);\r\n\r\n // Directly set the formatted value if the `rawValue` is found in `valuesToStrings`\r\n let elementValueIsAlreadySet = false;\r\n if (rawValueToFormat !== \"\" && !isRawValueNull) {\r\n this._triggerRangeEvents(minTest, maxTest);\r\n\r\n if (this.settings.valuesToStrings && this._checkValuesToStrings(rawValueToFormat)) {\r\n // Set the formatted value with the corresponding string\r\n this._setElementValue(this.settings.valuesToStrings[rawValueToFormat]);\r\n elementValueIsAlreadySet = true;\r\n }\r\n }\r\n\r\n // Only generate the formatted value if no `valuesToStrings` have been found\r\n if (!elementValueIsAlreadySet) {\r\n let value;\r\n if (isRawValueNull || rawValueToFormat === \"\") {\r\n value = rawValueToFormat;\r\n } else {\r\n value = String(rawValueToFormat);\r\n }\r\n\r\n if (rawValueToFormat !== \"\" && !isRawValueNull) {\r\n if (\r\n minTest &&\r\n maxTest &&\r\n !this.constructor._isElementValueEmptyOrOnlyTheNegativeSign(rawValueToFormat, this.settings)\r\n ) {\r\n value = this._modifyNegativeSignAndDecimalCharacterForRawValue(value);\r\n\r\n if (this.settings.divisorWhenUnfocused && !AutoNumericHelper.isNull(value)) {\r\n value = value / this.settings.divisorWhenUnfocused;\r\n value = value.toString();\r\n }\r\n\r\n value = this.constructor._roundFormattedValueShownOnBlur(value, this.settings);\r\n value = this.constructor._modifyNegativeSignAndDecimalCharacterForFormattedValue(value, this.settings);\r\n } else {\r\n this._triggerRangeEvents(minTest, maxTest);\r\n }\r\n } else if (rawValueToFormat === \"\") {\r\n switch (this.settings.emptyInputBehavior) {\r\n case AutoNumeric.options.emptyInputBehavior.zero:\r\n this._setRawValue(\"0\");\r\n value = this.constructor._roundValue(\"0\", this.settings, 0);\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.min:\r\n this._setRawValue(this.settings.minimumValue);\r\n value = this.constructor._roundFormattedValueShownOnFocusOrBlur(\r\n this.settings.minimumValue,\r\n this.settings,\r\n this.isFocused\r\n );\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.max:\r\n this._setRawValue(this.settings.maximumValue);\r\n value = this.constructor._roundFormattedValueShownOnFocusOrBlur(\r\n this.settings.maximumValue,\r\n this.settings,\r\n this.isFocused\r\n );\r\n break;\r\n default:\r\n if (AutoNumericHelper.isNumber(this.settings.emptyInputBehavior)) {\r\n this._setRawValue(this.settings.emptyInputBehavior);\r\n value = this.constructor._roundFormattedValueShownOnFocusOrBlur(\r\n this.settings.emptyInputBehavior,\r\n this.settings,\r\n this.isFocused\r\n );\r\n }\r\n }\r\n }\r\n\r\n let groupedValue = this.constructor._orderValueCurrencySymbolAndSuffixText(value, this.settings, false);\r\n if (\r\n !(\r\n this.constructor._isElementValueEmptyOrOnlyTheNegativeSign(value, this.settings) ||\r\n (isRawValueNull && this.settings.emptyInputBehavior === AutoNumeric.options.emptyInputBehavior.null)\r\n )\r\n ) {\r\n groupedValue = this.constructor._addGroupSeparators(value, this.settings, false, rawValueToFormat);\r\n }\r\n\r\n // Testing for `allowDecimalPadding.never` or `allowDecimalPadding.floats` is needed to make sure we do not keep a trailing decimalCharacter (like '500.') in the element, since the raw value would still be a correctly formatted integer ('500')\r\n if (\r\n groupedValue !== rawValueToFormat ||\r\n rawValueToFormat === \"\" || // This make sure we get rid on any currency symbol or suffix that might have been added on focus\r\n this.settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.never ||\r\n this.settings.allowDecimalPadding === AutoNumeric.options.allowDecimalPadding.floats\r\n ) {\r\n if (this.settings.symbolWhenUnfocused && rawValueToFormat !== \"\" && rawValueToFormat !== null) {\r\n groupedValue = `${groupedValue}${this.settings.symbolWhenUnfocused}`;\r\n }\r\n\r\n this._setElementValue(groupedValue);\r\n }\r\n }\r\n\r\n this._setValidOrInvalidState(this.rawValue);\r\n\r\n if (e.type === \"blur\") {\r\n //TODO Create separate handlers for blur and mouseleave, really.\r\n this._onBlur(e);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handler for 'paste' event\r\n *\r\n * @param {Event|ClipboardEvent} e\r\n */\r\n _onPaste(e) {\r\n //FIXME When pasting '000' on a thousand group selection, the whole selection gets deleted, and only one '0' is pasted (cf. issue #302)\r\n // The event is prevented by default, since otherwise the user would be able to paste invalid characters into the input\r\n e.preventDefault();\r\n\r\n if (this.settings.readOnly || this.domElement.readOnly || this.domElement.disabled) {\r\n // Do not allow pasting in a readonly element (fix issue #505)\r\n return;\r\n }\r\n\r\n let rawPastedText;\r\n if (window.clipboardData && window.clipboardData.getData) {\r\n // Special case for the obsolete and non-standard IE browsers 10 and 11\r\n rawPastedText = window.clipboardData.getData(\"Text\");\r\n } else if (e.clipboardData && e.clipboardData.getData) {\r\n // Normal case with modern browsers\r\n rawPastedText = e.clipboardData.getData(\"text/plain\");\r\n } else {\r\n AutoNumericHelper.throwError(\r\n \"Unable to retrieve the pasted value. Please use a modern browser (ie. Firefox or Chromium).\"\r\n );\r\n }\r\n\r\n // Fix for firefox paste handling on `contenteditable` elements where `e.target` is the the text node, not the element\r\n let eventTarget;\r\n if (!e.target.tagName) {\r\n eventTarget = e.explicitOriginalTarget;\r\n } else {\r\n eventTarget = e.target;\r\n }\r\n\r\n // 0. Special case if the user has selected all the input text before pasting\r\n const initialFormattedValue = AutoNumericHelper.getElementValue(eventTarget);\r\n const selectionStart = eventTarget.selectionStart || 0;\r\n const selectionEnd = eventTarget.selectionEnd || 0;\r\n const selectionSize = selectionEnd - selectionStart;\r\n\r\n if (selectionSize === initialFormattedValue.length) {\r\n // If all the element text is selected\r\n //TODO Refactor this with the tests below\r\n // Since the whole element content will be replaced, no need to complicate things and directly test for the validity of the pasted content, then set the `rawValue` and caret position (fix issue #482)\r\n // 1. Strip all thousand separators, brackets and currency sign, and convert the decimal character to a dot\r\n const untranslatedPastedText = this._preparePastedText(rawPastedText);\r\n const pastedRawValue = AutoNumericHelper.arabicToLatinNumbers(untranslatedPastedText, false, false, false); // Allow pasting arabic numbers\r\n\r\n // 2. Check that the paste is a valid number once it has been normalized to a raw value\r\n if (\r\n pastedRawValue === \".\" ||\r\n pastedRawValue === \"\" ||\r\n (pastedRawValue !== \".\" && !AutoNumericHelper.isNumber(pastedRawValue))\r\n ) {\r\n this.formatted = true; // This prevent the `keyup` event on the `v` key during a paste to try to format an empty value.\r\n // If the user tries to paste a single decimal character (that has been translated to '.' already) or the empty value, ignore the paste\r\n if (this.settings.onInvalidPaste === AutoNumeric.options.onInvalidPaste.error) {\r\n AutoNumericHelper.throwError(`The pasted value '${rawPastedText}' is not a valid paste content.`);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 3. Then try to set it as the new value. The `set()` method will run the additional tests (ie. limits) as needed.\r\n this.set(pastedRawValue);\r\n this.formatted = true;\r\n\r\n // 4. On a 'normal' non-autoNumeric input, an `input` event is sent when a paste is done. We mimic that.\r\n this._triggerEvent(AutoNumeric.events.native.input, eventTarget);\r\n\r\n // 5. Return since the job is done\r\n return;\r\n }\r\n\r\n // 1. Check if the paste has a negative sign (only if it's the first character), and store that information for later use\r\n const isPasteNegative = AutoNumericHelper.isNegativeStrict(rawPastedText, this.settings.negativeSignCharacter);\r\n if (isPasteNegative) {\r\n // 1a. Remove the negative sign from the pasted text\r\n rawPastedText = rawPastedText.slice(1, rawPastedText.length);\r\n }\r\n\r\n // 2. Strip all thousand separators, brackets and currency sign, and convert the decimal character to a dot\r\n const untranslatedPastedText = this._preparePastedText(rawPastedText);\r\n\r\n let pastedText;\r\n if (untranslatedPastedText === \".\") {\r\n // Special case : If the user tries to paste a single decimal character (that has been translated to '.' already)\r\n pastedText = \".\";\r\n } else {\r\n // Normal case\r\n // Allow pasting arabic numbers\r\n pastedText = AutoNumericHelper.arabicToLatinNumbers(untranslatedPastedText, false, false, false);\r\n }\r\n\r\n // 3. Test if the paste is valid (only has numbers and eventually a decimal character). If it's not valid, stop here.\r\n if (pastedText !== \".\" && (!AutoNumericHelper.isNumber(pastedText) || pastedText === \"\")) {\r\n this.formatted = true; // This prevent the `keyup` event on the `v` key during a paste to try to format an empty value (fix issue #484)\r\n if (this.settings.onInvalidPaste === AutoNumeric.options.onInvalidPaste.error) {\r\n AutoNumericHelper.throwError(`The pasted value '${rawPastedText}' is not a valid paste content.`);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 4. Calculate the paste result\r\n let caretPositionOnInitialTextAfterPasting;\r\n let isInitialValueNegative = AutoNumericHelper.isNegativeStrict(\r\n this.getNumericString(),\r\n this.settings.negativeSignCharacter\r\n );\r\n let isPasteNegativeAndInitialValueIsPositive;\r\n let result;\r\n\r\n // If the pasted content is negative, then the result will be negative too\r\n if (isPasteNegative && !isInitialValueNegative) {\r\n isInitialValueNegative = true;\r\n isPasteNegativeAndInitialValueIsPositive = true;\r\n } else {\r\n isPasteNegativeAndInitialValueIsPositive = false;\r\n }\r\n\r\n // 1. Generate the unformatted result\r\n const leftFormattedPart = initialFormattedValue.slice(0, selectionStart);\r\n const rightFormattedPart = initialFormattedValue.slice(selectionEnd, initialFormattedValue.length);\r\n\r\n if (selectionStart !== selectionEnd) {\r\n // a. If there is a selection, remove the selected part, and return the left and right part\r\n result = this._preparePastedText(leftFormattedPart + rightFormattedPart);\r\n } else {\r\n // b. Else if this is only one caret (and therefore no selection), then return the left and right part\r\n result = this._preparePastedText(initialFormattedValue);\r\n }\r\n\r\n // Add back the negative sign if needed\r\n if (isInitialValueNegative) {\r\n result = AutoNumericHelper.setRawNegativeSign(result);\r\n }\r\n\r\n // Build the unformatted result string\r\n caretPositionOnInitialTextAfterPasting = AutoNumericHelper.convertCharacterCountToIndexPosition(\r\n AutoNumericHelper.countNumberCharactersOnTheCaretLeftSide(\r\n initialFormattedValue,\r\n selectionStart,\r\n this.settings.decimalCharacter\r\n )\r\n );\r\n if (isPasteNegativeAndInitialValueIsPositive) {\r\n // If the initial paste is negative and the initial value is not, then I must offset the caret position by one place to the right to take the additional hyphen into account\r\n caretPositionOnInitialTextAfterPasting++;\r\n //TODO Quid if the negative sign is not on the left (negativePositiveSignPlacement and currencySymbolPlacement)?\r\n //TODO Quid if the positive sign is shown?\r\n }\r\n\r\n let leftPart = result.slice(0, caretPositionOnInitialTextAfterPasting);\r\n let rightPart = result.slice(caretPositionOnInitialTextAfterPasting, result.length);\r\n let leftPartContainedADot = false;\r\n if (pastedText === \".\") {\r\n if (AutoNumericHelper.contains(leftPart, \".\")) {\r\n // If I remove a dot here, then I need to update the caret position (decrement it by 1) when positioning it\r\n // To do so, we keep that info in order to modify the caret position later\r\n leftPartContainedADot = true;\r\n leftPart = leftPart.replace(\".\", \"\");\r\n }\r\n\r\n rightPart = rightPart.replace(\".\", \"\");\r\n }\r\n\r\n // Manage the case where a negative number is pasted onto another negative number that is entirely selected (cf. issue #593)\r\n let negativePasteOnNegativeNumber = false;\r\n if (leftPart === \"\" && rightPart === \"-\") {\r\n leftPart = \"-\";\r\n rightPart = \"\";\r\n // When pasting a negative number on a negative number, we need to offset the caret position one place to the right to take into account the negative sign\r\n negativePasteOnNegativeNumber = true;\r\n }\r\n\r\n // -- Here, we are good to go to continue on the same basis for each value of the `onInvalidPaste` option\r\n\r\n switch (this.settings.onInvalidPaste) {\r\n /* 4a. Truncate paste behavior:\r\n * Insert as many numbers as possible on the right hand side of the caret from the pasted text content, until the input reach its range limit.\r\n * If there is more characters in the clipboard once a limit is reached, drop the extraneous characters.\r\n * Otherwise paste all the numbers from the clipboard.\r\n * While doing so, we check if the result is within the minimum and maximum values allowed, and stop as soon as we encounter one of those.\r\n *\r\n * 4b. Replace paste behavior:\r\n * Idem than the 'truncate' paste behavior, except that when a range limit is hit, we try to replace the subsequent initial numbers with the pasted ones, until we hit the range limit a second (and last) time, or we run out of numbers to paste\r\n */\r\n /* eslint no-case-declarations: 0 */\r\n case AutoNumeric.options.onInvalidPaste.truncate:\r\n case AutoNumeric.options.onInvalidPaste.replace:\r\n // c. Add numbers one by one at the caret position, while testing if the result is valid and within the range of the minimum and maximum value\r\n // Continue until you either run out of numbers to paste, or that you get out of the range limits\r\n const minParse = AutoNumericHelper.parseStr(this.settings.minimumValue);\r\n const maxParse = AutoNumericHelper.parseStr(this.settings.maximumValue);\r\n let lastGoodKnownResult = result; // This is set as the default, in case we do not add even one number\r\n let pastedTextIndex = 0;\r\n let modifiedLeftPart = leftPart;\r\n\r\n while (pastedTextIndex < pastedText.length) {\r\n // Modify the result with another pasted character\r\n modifiedLeftPart += pastedText[pastedTextIndex];\r\n result = modifiedLeftPart + rightPart;\r\n\r\n // Check the range limits\r\n if (!this.constructor._checkIfInRange(result, minParse, maxParse)) {\r\n // The result is out of the range limits, stop the loop here\r\n break;\r\n }\r\n\r\n // Save the last good known result\r\n lastGoodKnownResult = result;\r\n\r\n // Update the local variables for the next loop\r\n pastedTextIndex++;\r\n }\r\n\r\n // Update the last caret position where to insert a new number\r\n caretPositionOnInitialTextAfterPasting += pastedTextIndex;\r\n if (negativePasteOnNegativeNumber) caretPositionOnInitialTextAfterPasting++;\r\n\r\n //XXX Here we have the result for the `truncate` option\r\n if (this.settings.onInvalidPaste === AutoNumeric.options.onInvalidPaste.truncate) {\r\n //TODO If the user as defined a truncate callback and there are still some numbers (that will be dropped), then call this callback with the initial paste as well as the remaining numbers\r\n result = lastGoodKnownResult;\r\n\r\n if (leftPartContainedADot) {\r\n // If a dot has been removed for the part on the left of the caret, we decrement the caret index position\r\n caretPositionOnInitialTextAfterPasting--;\r\n }\r\n break;\r\n }\r\n //XXX ...else we need to continue modifying the result for the 'replace' option\r\n\r\n // d. Until there are numbers to paste, replace the initial numbers one by one, and still do the range test.\r\n // Stop when you have no more numbers to paste, or if you are out of the range limits.\r\n // If you do get to the range limits, use the previous known good value within those limits.\r\n // Note: The numbers are replaced one by one, in the integer then decimal part, while ignoring the decimal character\r\n //TODO What should happen if the user try to paste a decimal number? Should we override the current initial decimal character in favor of this new one? If we do, then we have to recalculate the vMin/vMax from the start in order to take into account this new decimal character position..\r\n let lastGoodKnownResultIndex = caretPositionOnInitialTextAfterPasting;\r\n const lastGoodKnownResultSize = lastGoodKnownResult.length;\r\n\r\n while (pastedTextIndex < pastedText.length && lastGoodKnownResultIndex < lastGoodKnownResultSize) {\r\n if (lastGoodKnownResult[lastGoodKnownResultIndex] === \".\") {\r\n // We skip the decimal character 'replacement'. That way, we do not change the decimal character position regarding the remaining numbers.\r\n lastGoodKnownResultIndex++;\r\n continue;\r\n }\r\n\r\n // This replace one character at a time\r\n result = AutoNumericHelper.replaceCharAt(\r\n lastGoodKnownResult,\r\n lastGoodKnownResultIndex,\r\n pastedText[pastedTextIndex]\r\n );\r\n\r\n // Check the range limits\r\n if (!this.constructor._checkIfInRange(result, minParse, maxParse)) {\r\n // The result is out of the range limits, stop the loop here\r\n break;\r\n }\r\n\r\n // Save the last good known result\r\n lastGoodKnownResult = result;\r\n\r\n // Update the local variables for the next loop\r\n pastedTextIndex++;\r\n lastGoodKnownResultIndex++;\r\n }\r\n\r\n // Update the last caret position where to insert a new number\r\n caretPositionOnInitialTextAfterPasting = lastGoodKnownResultIndex;\r\n\r\n if (leftPartContainedADot) {\r\n // If a dot has been removed for the part on the left of the caret, we decrement the caret index position\r\n caretPositionOnInitialTextAfterPasting--;\r\n }\r\n\r\n result = lastGoodKnownResult;\r\n\r\n break;\r\n /* 4c. Normal paste behavior:\r\n * Insert the pasted number inside the current unformatted text, at the correct caret position or selection\r\n */\r\n case AutoNumeric.options.onInvalidPaste.error:\r\n case AutoNumeric.options.onInvalidPaste.ignore:\r\n case AutoNumeric.options.onInvalidPaste.clamp:\r\n default:\r\n // Generate the unformatted result\r\n result = `${leftPart}${pastedText}${rightPart}`;\r\n\r\n // 2. Calculate the caret position in the unformatted value, for later use\r\n if (selectionStart === selectionEnd) {\r\n // There is no selection, then the caret position is set after the pasted text\r\n const indexWherePastedTextHasBeenInserted = AutoNumericHelper.convertCharacterCountToIndexPosition(\r\n AutoNumericHelper.countNumberCharactersOnTheCaretLeftSide(\r\n initialFormattedValue,\r\n selectionStart,\r\n this.settings.decimalCharacter\r\n )\r\n );\r\n caretPositionOnInitialTextAfterPasting = indexWherePastedTextHasBeenInserted + pastedText.length; // I must not count the characters that have been removed from the pasted text (ie. '.')\r\n } else if (rightPart === \"\") {\r\n // If the user selected from the caret position to the end of the input (on the far right)\r\n caretPositionOnInitialTextAfterPasting =\r\n AutoNumericHelper.convertCharacterCountToIndexPosition(\r\n AutoNumericHelper.countNumberCharactersOnTheCaretLeftSide(\r\n initialFormattedValue,\r\n selectionStart,\r\n this.settings.decimalCharacter\r\n )\r\n ) + pastedText.length;\r\n if (negativePasteOnNegativeNumber) caretPositionOnInitialTextAfterPasting++;\r\n } else {\r\n // Usual case\r\n const indexSelectionEndInRawValue = AutoNumericHelper.convertCharacterCountToIndexPosition(\r\n AutoNumericHelper.countNumberCharactersOnTheCaretLeftSide(\r\n initialFormattedValue,\r\n selectionEnd,\r\n this.settings.decimalCharacter\r\n )\r\n );\r\n\r\n // Here I must not count the characters that have been removed from the pasted text (ie. '.'), or the thousand separators in the initial selected text\r\n const selectedText = AutoNumericHelper.getElementValue(eventTarget).slice(selectionStart, selectionEnd);\r\n caretPositionOnInitialTextAfterPasting =\r\n indexSelectionEndInRawValue -\r\n selectionSize +\r\n AutoNumericHelper.countCharInText(this.settings.digitGroupSeparator, selectedText) +\r\n pastedText.length;\r\n }\r\n\r\n // Modify the caret position for special cases, only if the whole input has not been selected\r\n if (isPasteNegativeAndInitialValueIsPositive) {\r\n // If the pasted value has a negative sign ('-'), but the initial value does not, offset the index by one\r\n caretPositionOnInitialTextAfterPasting++;\r\n }\r\n\r\n if (leftPartContainedADot) {\r\n // If a dot has been removed for the part on the left of the caret, we decrement the caret index position\r\n caretPositionOnInitialTextAfterPasting--;\r\n }\r\n }\r\n\r\n // 5. Check if the result is a valid number, if not, drop the paste and do nothing.\r\n if (!AutoNumericHelper.isNumber(result) || result === \"\") {\r\n if (this.settings.onInvalidPaste === AutoNumeric.options.onInvalidPaste.error) {\r\n AutoNumericHelper.throwError(\r\n `The pasted value '${rawPastedText}' would result into an invalid content '${result}'.`\r\n ); //TODO Should we send a warning instead of throwing an error?\r\n //TODO This is not DRY ; refactor with above\r\n }\r\n return;\r\n }\r\n\r\n // 6. If it's a valid number, check if it falls inside the minimum and maximum value. If this fails, modify the value following this procedure :\r\n /*\r\n * If 'error' (this is the default) :\r\n * - Normal paste behavior.\r\n * - Try to set the new value, if it fails, then throw an error in the console.\r\n * - Do not change the input value, do not change the current selection.\r\n * If 'ignore' :\r\n * - Normal paste behavior.\r\n * - Try to set the new value, if it fails, do nothing more.\r\n * - Do not change the input value, do not change the current selection.\r\n * If 'clamp' :\r\n * - Normal paste behavior.\r\n * - Try to set the new value, if it fails, set the value to the minimum or maximum limit, whichever is closest to the\r\n * paste result.\r\n * - Change the caret position to be positioned on the left hand side of the decimal character.\r\n * If 'truncate' :\r\n * - Truncate paste behavior.\r\n * - Try to set the new value, until it fails (if the result is out of the min and max value limits).\r\n * - Drop the remaining non-pasted numbers, and keep the last known non-failing result.\r\n * - Change the caret position to be positioned after the last pasted character.\r\n * If 'replace' :\r\n * - Replace paste behavior.\r\n * - Try to set the new value, until it fails (if the result is out of the min and max value limits).\r\n * - Then try to replace as many numbers as possible with the pasted ones. Once it fails, keep the last known non-failing result.\r\n * - Change the caret position to be positioned after the last pasted character.\r\n */\r\n let valueHasBeenSet = false;\r\n let valueHasBeenClamped = false;\r\n try {\r\n this.set(result);\r\n valueHasBeenSet = true;\r\n } catch (error) {\r\n let clampedValue;\r\n switch (this.settings.onInvalidPaste) {\r\n case AutoNumeric.options.onInvalidPaste.clamp:\r\n clampedValue = AutoNumericHelper.clampToRangeLimits(result, this.settings);\r\n try {\r\n this.set(clampedValue);\r\n } catch (error) {\r\n AutoNumericHelper.throwError(`Fatal error: Unable to set the clamped value '${clampedValue}'.`);\r\n }\r\n\r\n valueHasBeenClamped = true;\r\n valueHasBeenSet = true;\r\n result = clampedValue; // This is used only for setting the caret position later\r\n break;\r\n case AutoNumeric.options.onInvalidPaste.error:\r\n case AutoNumeric.options.onInvalidPaste.truncate:\r\n case AutoNumeric.options.onInvalidPaste.replace:\r\n // Throw an error message\r\n AutoNumericHelper.throwError(\r\n `The pasted value '${rawPastedText}' results in a value '${result}' that is outside of the minimum [${this.settings.minimumValue}] and maximum [${this.settings.maximumValue}] value range.`\r\n );\r\n // falls through\r\n case AutoNumeric.options.onInvalidPaste.ignore:\r\n // Do nothing\r\n // falls through\r\n default:\r\n return; // ...and nothing else should be changed\r\n }\r\n }\r\n\r\n // 7. Then lastly, set the caret position at the right logical place\r\n const targetValue = AutoNumericHelper.getElementValue(eventTarget);\r\n let caretPositionInFormattedNumber;\r\n if (valueHasBeenSet) {\r\n switch (this.settings.onInvalidPaste) {\r\n case AutoNumeric.options.onInvalidPaste.clamp:\r\n if (valueHasBeenClamped) {\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n AutoNumericHelper.setElementSelection(\r\n eventTarget,\r\n targetValue.length - this.settings.currencySymbol.length\r\n ); // This puts the caret on the right of the last decimal place\r\n } else {\r\n AutoNumericHelper.setElementSelection(eventTarget, targetValue.length); // ..and this on the far right\r\n }\r\n\r\n break;\r\n } // else if the value has not been clamped, the default behavior is used...\r\n // falls through\r\n case AutoNumeric.options.onInvalidPaste.error:\r\n case AutoNumeric.options.onInvalidPaste.ignore:\r\n case AutoNumeric.options.onInvalidPaste.truncate:\r\n case AutoNumeric.options.onInvalidPaste.replace:\r\n default:\r\n // Whenever one or multiple characters are pasted, this means we have to manage the potential thousand separators that could be added by the formatting\r\n caretPositionInFormattedNumber = AutoNumericHelper.findCaretPositionInFormattedNumber(\r\n result,\r\n caretPositionOnInitialTextAfterPasting,\r\n targetValue,\r\n this.settings.decimalCharacter\r\n );\r\n AutoNumericHelper.setElementSelection(eventTarget, caretPositionInFormattedNumber);\r\n }\r\n }\r\n\r\n // 8. We make sure we send an input event only if the result is different than the initial value before the paste\r\n if (valueHasBeenSet && initialFormattedValue !== targetValue) {\r\n // On a 'normal' non-autoNumeric input, an `input` event is sent when a paste is done. We mimic that.\r\n this._triggerEvent(AutoNumeric.events.native.input, eventTarget);\r\n }\r\n }\r\n\r\n /**\r\n * When focusing out of the input, we check if the value has changed, and if it has, then we send a `change` event (since the native one would have been prevented by `e.preventDefault()` called in the other event listeners).\r\n * We also update the info of the focused state in the `this.isFocused` variable.\r\n *\r\n * @param {Event} e\r\n */\r\n _onBlur(e) {\r\n // Keep track if the element is currently focused\r\n this.isFocused = false;\r\n // Keep track if the user is currently editing the element\r\n this.isEditing = false;\r\n\r\n // Send a `change` event if the raw value has been changed since the last focus or 'enter' validation\r\n if (this.rawValue !== this.rawValueOnFocus) {\r\n this._triggerEvent(AutoNumeric.events.native.change, e.target);\r\n }\r\n\r\n this.rawValueOnFocus = void 0; // Reset the tracker\r\n }\r\n\r\n /**\r\n * Handler for 'wheel' event\r\n *\r\n * @param {WheelEvent} e\r\n */\r\n _onWheel(e) {\r\n if (this.formulaMode) {\r\n return;\r\n }\r\n\r\n if (this.settings.readOnly || this.domElement.readOnly || this.domElement.disabled) {\r\n // Do not allow scrolling in a readonly element (fix issue #541)\r\n return;\r\n }\r\n\r\n if (this.settings.modifyValueOnWheel) {\r\n if (this.settings.wheelOn === AutoNumeric.options.wheelOn.focus) {\r\n if (this.isFocused) {\r\n if (!e.shiftKey) {\r\n this.wheelAction(e);\r\n }\r\n } else if (e.shiftKey) {\r\n this.wheelAction(e);\r\n }\r\n } else if (this.settings.wheelOn === AutoNumeric.options.wheelOn.hover) {\r\n if (!e.shiftKey) {\r\n this.wheelAction(e);\r\n } else {\r\n // Note: When not `defaultPrevented`, Shift + mouse wheel is reserved by the browsers for horizontal scrolling.\r\n // Hence, using the Shift key with the `wheelOn` 'hover' option will only scroll the page if we prevent the default behavior\r\n e.preventDefault(); // Do not scroll horizontally\r\n\r\n // Scroll vertically\r\n window.scrollBy(0, AutoNumericHelper.isNegativeStrict(String(e.deltaY)) ? -50 : 50); // `e.deltaY` is usually too small compared to how the page is scrolled. That's why we use a fixed offset.\r\n }\r\n } else {\r\n AutoNumericHelper.throwError(\"Unknown `wheelOn` option.\");\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Increment or decrement the element value according to the `wheelStep` option chosen\r\n *\r\n * @param {WheelEvent} e The `wheel` event\r\n */\r\n wheelAction(e) {\r\n this.isWheelEvent = true; // Keep the info that we are currently managing a mouse wheel event\r\n\r\n // 0) First, save the caret position so we can set it back once the value has been changed\r\n const selectionStart = e.target.selectionStart || 0;\r\n const selectionEnd = e.target.selectionEnd || 0;\r\n\r\n // 1) Get the unformatted value\r\n const currentUnformattedValue = this.rawValue;\r\n\r\n let result;\r\n if (AutoNumericHelper.isUndefinedOrNullOrEmpty(currentUnformattedValue)) {\r\n // If by default the input is empty, start at '0'\r\n if (this.settings.minimumValue > 0 || this.settings.maximumValue < 0) {\r\n // or if '0' is not between min and max value, 'minimumValue' if the user does a wheelup, 'maximumValue' if the user does a wheeldown\r\n if (AutoNumericHelper.isWheelUpEvent(e)) {\r\n result = this.settings.minimumValue;\r\n } else if (AutoNumericHelper.isWheelDownEvent(e)) {\r\n result = this.settings.maximumValue;\r\n } else {\r\n AutoNumericHelper.throwError(`The event is not a 'wheel' event.`);\r\n }\r\n } else {\r\n result = 0;\r\n }\r\n } else {\r\n result = currentUnformattedValue;\r\n }\r\n\r\n result = +result; // Typecast to a number needed for the following addition/subtraction\r\n\r\n // 2) Increment/Decrement the value\r\n // But first, choose the increment/decrement method ; fixed or progressive\r\n if (AutoNumericHelper.isNumber(this.settings.wheelStep)) {\r\n const step = +this.settings.wheelStep; // Typecast to a number needed for the following addition/subtraction\r\n // Fixed method\r\n // This is the simplest method, where a fixed offset in added/subtracted from the current value\r\n if (AutoNumericHelper.isWheelUpEvent(e)) {\r\n // Increment\r\n result += step;\r\n } else if (AutoNumericHelper.isWheelDownEvent(e)) {\r\n // Decrement\r\n result -= step;\r\n }\r\n } else {\r\n // Progressive method\r\n // For this method, we calculate an offset that is in relation to the size of the current number (using only the integer part size).\r\n // The bigger the number, the bigger the offset (usually the number count in the integer part minus 3, except for small numbers where a different behavior is better for the user experience).\r\n //TODO Known limitation : The progressive method does not play well with numbers between 0 and 1 where to modify the decimal places the rawValue first has to go from '1' to '0'\r\n if (AutoNumericHelper.isWheelUpEvent(e)) {\r\n // Increment\r\n result = AutoNumericHelper.addAndRoundToNearestAuto(result, this.settings.decimalPlacesRawValue);\r\n } else if (AutoNumericHelper.isWheelDownEvent(e)) {\r\n // Decrement\r\n result = AutoNumericHelper.subtractAndRoundToNearestAuto(result, this.settings.decimalPlacesRawValue);\r\n }\r\n }\r\n\r\n // 3) Set the new value so it gets formatted\r\n // First clamp the result if needed\r\n result = AutoNumericHelper.clampToRangeLimits(result, this.settings);\r\n if (result !== +currentUnformattedValue) {\r\n // Only 'set' the value if it has changed. For instance 'set' should not happen if the user hits a limit and continue to try to go past it since we clamp the value.\r\n this.set(result);\r\n\r\n // Since we changed the input value, we send a native `input` event\r\n this._triggerEvent(AutoNumeric.events.native.input, e.target);\r\n }\r\n\r\n //XXX Do not prevent if the value is not modified? From a UX point of view, preventing the wheel event when the user use it on top of an autoNumeric element should always be done, even if the value does not change. Perhaps that could affect other scripts relying on this event to be sent though.\r\n e.preventDefault(); // We prevent the page to scroll while we increment/decrement the value\r\n\r\n // 4) Finally, we set back the caret position/selection\r\n // There is no need to take into account the fact that the number count could be different at the end of the wheel event ; it would be too complex and most of the time unreliable\r\n this._setSelection(selectionStart, selectionEnd);\r\n\r\n this.isWheelEvent = false; // Set back the mouse wheel indicator to its default\r\n }\r\n\r\n /**\r\n * Handler for 'drop' event\r\n *\r\n * @param {DragEvent} e\r\n */\r\n _onDrop(e) {\r\n if (this.formulaMode) {\r\n // Dropping while in formula mode shouldn't be possible. This is done 'just in case'\r\n return;\r\n }\r\n\r\n // Note: by default browsers already prevent the drop on readOnly and disabled elements\r\n this.isDropEvent = true;\r\n e.preventDefault();\r\n let format;\r\n if (AutoNumericHelper.isIE11()) {\r\n format = \"text\";\r\n } else {\r\n format = \"text/plain\";\r\n }\r\n\r\n const droppedText = e.dataTransfer.getData(format);\r\n const cleanedValue = this.unformatOther(droppedText);\r\n this.set(cleanedValue);\r\n this.isDropEvent = false;\r\n }\r\n\r\n /**\r\n * Handler for 'submit' events happening on the parent <form> element.\r\n * If `unformatOnSubmit` is set to `true`, the element value is first unformatted before the form is submitted.\r\n *\r\n * @returns {boolean}\r\n */\r\n _onFormSubmit() {\r\n // Search for all the AutoNumeric children of the form element and call the `_unformatOnSubmit()` function\r\n const inputElements = this._getFormAutoNumericChildren(this.parentForm);\r\n const aNElements = inputElements.map((aNElement) => this.constructor.getAutoNumericElement(aNElement));\r\n aNElements.forEach((aNElement) => aNElement._unformatOnSubmit());\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Handler for 'reset' events caught on the parent <form> element.\r\n * When such event is detected, then every child AutoNumeric elements must format their default value that the browser is forcing upon them.\r\n *\r\n * @private\r\n */\r\n _onFormReset() {\r\n const inputElements = this._getFormAutoNumericChildren(this.parentForm);\r\n const aNElements = inputElements.map((aNElement) => this.constructor.getAutoNumericElement(aNElement));\r\n // Tell all the AutoNumeric children to format their default value\r\n aNElements.forEach((aNElement) => {\r\n const val = this._getDefaultValue(aNElement.node());\r\n // aNElement.set(val); //XXX If I use that line, the format is first correctly done, but the form reset is still not finished and will overwrite the formatting. This is why we need to use the following setTimeout line.\r\n setTimeout(() => aNElement.set(val), 0); //XXX This is an ugly hack, but it seems to be the accepted answer to this problem (https://stackoverflow.com/a/8152960/2834898). This is sad. Do note that I use '0ms' here since using `setTimeout` will push that code on the event stack, and as soon as the reset will be finished, this will be run (see https://stackoverflow.com/a/23987283/2834898).\r\n });\r\n }\r\n\r\n /**\r\n * Unformat the element value according to the `unformatOnSubmit` option\r\n *\r\n * @private\r\n */\r\n _unformatOnSubmit() {\r\n if (this.settings.unformatOnSubmit) {\r\n this._setElementValue(this.rawValue);\r\n }\r\n }\r\n\r\n /**\r\n * Listen for the `alt` key keydown event globally, and if the event is caught, unformat the AutoNumeric element that is hovered by the mouse.\r\n *\r\n * @param {KeyboardEvent} e\r\n * @private\r\n */\r\n _onKeydownGlobal(e) {\r\n //TODO Find a way to keep the caret position between the alt keyup/keydown states\r\n if (AutoNumericHelper.character(e) === AutoNumericEnum.keyName.Alt) {\r\n const hoveredElement = AutoNumericHelper.getHoveredElement();\r\n if (AutoNumeric.isManagedByAutoNumeric(hoveredElement)) {\r\n const anElement = AutoNumeric.getAutoNumericElement(hoveredElement);\r\n if (!anElement.formulaMode && anElement.settings.unformatOnHover) {\r\n this.constructor._unformatAltHovered(anElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Listen for the `alt` key keyup event globally, and if the event is caught, reformat the AutoNumeric element that is hovered by the mouse.\r\n *\r\n * @param {KeyboardEvent} e\r\n * @private\r\n */\r\n _onKeyupGlobal(e) {\r\n if (AutoNumericHelper.character(e) === AutoNumericEnum.keyName.Alt) {\r\n const hoveredElement = AutoNumericHelper.getHoveredElement();\r\n if (AutoNumeric.isManagedByAutoNumeric(hoveredElement)) {\r\n const anElement = AutoNumeric.getAutoNumericElement(hoveredElement);\r\n if (anElement.formulaMode || !anElement.settings.unformatOnHover) {\r\n return;\r\n }\r\n\r\n this.constructor._reformatAltHovered(anElement);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the DOM element is supported by autoNumeric.\r\n * A supported element is an element whitelisted in the `allowedTagList`.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _isElementTagSupported() {\r\n if (!AutoNumericHelper.isElement(this.domElement)) {\r\n AutoNumericHelper.throwError(`The DOM element is not valid, ${this.domElement} given.`);\r\n }\r\n\r\n return AutoNumericHelper.isInArray(this.domElement.tagName.toLowerCase(), this.allowedTagList);\r\n }\r\n\r\n /**\r\n * Return `true` in the DOM element is an <input>.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _isInputElement() {\r\n return this.domElement.tagName.toLowerCase() === \"input\";\r\n }\r\n\r\n /**\r\n * Return `true` if the input type is supported by AutoNumeric\r\n *\r\n * @returns {boolean}\r\n * @throws\r\n */\r\n _isInputTypeSupported() {\r\n return (\r\n this.domElement.type === \"text\" ||\r\n this.domElement.type === \"hidden\" ||\r\n this.domElement.type === \"tel\" ||\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(this.domElement.type)\r\n );\r\n }\r\n\r\n /**\r\n * Check if the DOM element is supported by autoNumeric.\r\n * A supported element is either an <input> element with the correct 'type' attribute, or a tag whitelisted in the `allowedTagList` array.\r\n * If the check fails, this method throws.\r\n * This function also sets the info `this.isInputElement` which keep tracks if the DOM element is an <input> or not, and the `this.isContentEditable` if the element has the `contenteditable` attribute set to `true` initially.\r\n *\r\n * @throws\r\n * @private\r\n */\r\n _checkElement() {\r\n const currentElementTag = this.domElement.tagName.toLowerCase();\r\n\r\n if (!this._isElementTagSupported()) {\r\n AutoNumericHelper.throwError(`The <${currentElementTag}> tag is not supported by autoNumeric`);\r\n }\r\n\r\n if (this._isInputElement()) {\r\n if (!this._isInputTypeSupported()) {\r\n AutoNumericHelper.throwError(`The input type \"${this.domElement.type}\" is not supported by autoNumeric`);\r\n }\r\n\r\n this.isInputElement = true;\r\n } else {\r\n this.isInputElement = false;\r\n this.isContentEditable =\r\n this.domElement.hasAttribute(\"contenteditable\") && this.domElement.getAttribute(\"contenteditable\") === \"true\";\r\n }\r\n }\r\n\r\n /**\r\n * Formats the default value on page load.\r\n * This is called only if the `formatOnPageLoad` option is set to `true`.\r\n *\r\n * @param {number|string|null} forcedInitialValue The value that should be used for initialization, in place on the eventual html one\r\n */\r\n _formatDefaultValueOnPageLoad(forcedInitialValue = null) {\r\n let setValue = true;\r\n let currentValue;\r\n if (!AutoNumericHelper.isNull(forcedInitialValue)) {\r\n currentValue = forcedInitialValue;\r\n } else {\r\n // Make sure the initial value does not have any superfluous whitespaces around it (Fix issue #479)\r\n currentValue = AutoNumericHelper.getElementValue(this.domElement).trim();\r\n // Correct the DOM attribute in case some whitespaces were present\r\n this.domElement.setAttribute(\"value\", currentValue);\r\n }\r\n\r\n if (this.isInputElement || this.isContentEditable) {\r\n /*\r\n * If the input value has been set by the dev, but not directly as an attribute in the html, then it takes\r\n * precedence and should get formatted during the initialization (if this input value is a valid number and that the\r\n * developer wants it formatted on init (cf. the `settings.formatOnPageLoad` option)).\r\n * Note; this is true whatever the developer has set for `data-default-value-override` in the html (asp.net users).\r\n *\r\n * In other words : if `defaultValueOverride` is not null, it means the developer is trying to prevent postback problems.\r\n * But if `input.value` is set to a number, and the html `value` attribute is not set, then it means the dev has\r\n * changed the input value, and then it means we should not overwrite his own decision to do so.\r\n * Hence, if `defaultValueOverride` is not null, but `input.value` is a number and `this.domElement.hasAttribute('value')`\r\n * is false, we should ignore `defaultValueOverride` altogether.\r\n */\r\n const unLocalizedCurrentValue = this.constructor._toNumericValue(currentValue, this.settings); // This allows to use a localized value on startup\r\n if (!this.domElement.hasAttribute(\"value\") || this.domElement.getAttribute(\"value\") === \"\") {\r\n // Check if the `value` is valid or not\r\n if (!isNaN(Number(unLocalizedCurrentValue)) && Infinity !== unLocalizedCurrentValue) {\r\n this.set(unLocalizedCurrentValue);\r\n setValue = false;\r\n } else {\r\n // If not, inform the developer that nothing usable has been provided\r\n AutoNumericHelper.throwError(\r\n `The value [${currentValue}] used in the input is not a valid value autoNumeric can work with.`\r\n );\r\n }\r\n } else {\r\n /* Checks for :\r\n * - page reload from back button, and\r\n * - ASP.net form post back\r\n * The following HTML data attribute is REQUIRED (data-an-default=\"same value as the value attribute\")\r\n * example: <asp:TextBox runat=\"server\" id=\"someID\" text=\"1234.56\" data-an-default=\"1234.56\">\r\n */\r\n if (\r\n (this.settings.defaultValueOverride !== null &&\r\n this.settings.defaultValueOverride.toString() !== currentValue) ||\r\n (this.settings.defaultValueOverride === null &&\r\n currentValue !== \"\" &&\r\n currentValue !== this.domElement.getAttribute(\"value\")) ||\r\n (currentValue !== \"\" &&\r\n this.domElement.getAttribute(\"type\") === \"hidden\" &&\r\n !AutoNumericHelper.isNumber(unLocalizedCurrentValue))\r\n ) {\r\n if (\r\n this.settings.saveValueToSessionStorage &&\r\n (this.settings.decimalPlacesShownOnFocus !== null || this.settings.divisorWhenUnfocused)\r\n ) {\r\n this._setRawValue(this._getValueFromPersistentStorage());\r\n }\r\n\r\n // If the decimalPlacesShownOnFocus value should NOT be saved in sessionStorage\r\n if (!this.settings.saveValueToSessionStorage) {\r\n const toStrip = this.constructor._removeBrackets(currentValue, this.settings);\r\n if (\r\n (this.settings.negativePositiveSignPlacement ===\r\n AutoNumeric.options.negativePositiveSignPlacement.suffix ||\r\n (this.settings.negativePositiveSignPlacement !==\r\n AutoNumeric.options.negativePositiveSignPlacement.prefix &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix)) &&\r\n this.settings.negativeSignCharacter !== \"\" &&\r\n AutoNumericHelper.isNegative(currentValue, this.settings.negativeSignCharacter)\r\n ) {\r\n this._setRawValue(\r\n `-${this.constructor._stripAllNonNumberCharacters(toStrip, this.settings, true, this.isFocused)}`\r\n );\r\n } else {\r\n this._setRawValue(\r\n this.constructor._stripAllNonNumberCharacters(toStrip, this.settings, true, this.isFocused)\r\n );\r\n }\r\n }\r\n\r\n setValue = false;\r\n }\r\n }\r\n\r\n if (currentValue === \"\") {\r\n switch (this.settings.emptyInputBehavior) {\r\n case AutoNumeric.options.emptyInputBehavior.focus:\r\n case AutoNumeric.options.emptyInputBehavior.null:\r\n case AutoNumeric.options.emptyInputBehavior.press:\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.always:\r\n this._setElementValue(this.settings.currencySymbol);\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.min:\r\n this.set(this.settings.minimumValue);\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.max:\r\n this.set(this.settings.maximumValue);\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.zero:\r\n this.set(\"0\");\r\n break;\r\n // When `emptyInputBehavior` is a number or a string representing a number\r\n default:\r\n this.set(this.settings.emptyInputBehavior);\r\n }\r\n } else if (setValue && currentValue === this.domElement.getAttribute(\"value\")) {\r\n this.set(currentValue);\r\n }\r\n } else if (this.settings.defaultValueOverride === null || this.settings.defaultValueOverride === currentValue) {\r\n this.set(currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * Enhance the user experience by modifying the default `negativePositiveSignPlacement` option depending on `currencySymbol` and `currencySymbolPlacement`.\r\n *\r\n * If the user has not set the placement of the negative sign (`negativePositiveSignPlacement`), but has set a currency symbol (`currencySymbol`),\r\n * then we modify the default value of `negativePositiveSignPlacement` in order to keep the resulting output logical by default :\r\n * - \"$-1,234.56\" instead of \"-$1,234.56\" ({currencySymbol: \"$\", negativePositiveSignPlacement: \"r\"})\r\n * - \"-1,234.56$\" instead of \"1,234.56-$\" ({currencySymbol: \"$\", currencySymbolPlacement: \"s\", negativePositiveSignPlacement: \"p\"})\r\n *\r\n * @param {object} settings\r\n */\r\n static _correctNegativePositiveSignPlacementOption(settings) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n // If negativePositiveSignPlacement is already set, we do not overwrite it\r\n if (!AutoNumericHelper.isNull(settings.negativePositiveSignPlacement)) {\r\n return;\r\n }\r\n\r\n if (\r\n !AutoNumericHelper.isUndefined(settings) &&\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(settings.negativePositiveSignPlacement) &&\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(settings.currencySymbol)\r\n ) {\r\n switch (settings.currencySymbolPlacement) {\r\n case AutoNumeric.options.currencySymbolPlacement.suffix:\r\n settings.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; // Default -1,234.56 €\r\n break;\r\n case AutoNumeric.options.currencySymbolPlacement.prefix:\r\n settings.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.left; // Default -$1,234.56\r\n break;\r\n default:\r\n //\r\n }\r\n } else {\r\n // Sets the default value if `negativePositiveSignPlacement` is `null`\r\n settings.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.left;\r\n }\r\n }\r\n\r\n /**\r\n * Correct the `caretPositionOnFocus` and `selectOnFocus` options, since setting both leads to a conflict.\r\n * This method directly modifies the `options` object passed as a parameter, then returns it.\r\n * It returns `null` if the given option is `null`.\r\n *\r\n * @param {object} options The options passed as an argument by the user\r\n * @returns {object|null}\r\n * @private\r\n */\r\n static _correctCaretPositionOnFocusAndSelectOnFocusOptions(options) {\r\n if (AutoNumericHelper.isNull(options)) {\r\n return null;\r\n }\r\n\r\n // If the user has set the `caretPositionOnFocus` option, do not set `selectOnFocus` to `true` by default\r\n if (\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(options.caretPositionOnFocus) &&\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(options.selectOnFocus)\r\n ) {\r\n options.selectOnFocus = AutoNumeric.options.selectOnFocus.doNotSelect;\r\n }\r\n\r\n // If the user has set the `selectOnFocus` option to `true`, set `caretPositionOnFocus` to `doNoForceCaretPosition`\r\n if (\r\n AutoNumericHelper.isUndefinedOrNullOrEmpty(options.caretPositionOnFocus) &&\r\n !AutoNumericHelper.isUndefinedOrNullOrEmpty(options.selectOnFocus) &&\r\n options.selectOnFocus === AutoNumeric.options.selectOnFocus.select\r\n ) {\r\n options.caretPositionOnFocus = AutoNumeric.options.caretPositionOnFocus.doNoForceCaretPosition;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n /**\r\n * Calculate the number de decimal places to be used by the AutoNumeric object, for each of its state, and for its formatted and raw value.\r\n * By default, the `rawValue` precision is the same as the formatted value one.\r\n *\r\n * This method is called during the AutoNumeric object initialization. This assumes some internal variable state.\r\n *\r\n * This methods set the following options accordingly to their own value and the mandatory `decimalPlaces` option:\r\n * - decimalPlacesRawValue (nullable)\r\n * - decimalPlacesShownOnBlur (nullable)\r\n * - decimalPlacesShownOnFocus (nullable)\r\n *\r\n * Note: the `decimalPlaces` option is only used here and only serve to define those three previous options value.\r\n * AutoNumeric will then *only* use `decimalPlacesRawValue`, `decimalPlacesShownOnBlur` and `decimalPlacesShownOnFocus` from there.\r\n *\r\n * This methods directly modifies the `settings` object passed as a parameter.\r\n *\r\n * @param {object} settings This is an object with the new settings to use.\r\n * @private\r\n */\r\n static _calculateDecimalPlacesOnInit(settings) {\r\n // Check the `decimalPlaces*` options and output any warnings as needed, before modifying those options\r\n this._validateDecimalPlacesRawValue(settings);\r\n\r\n // Initialization phase\r\n //XXX This assumes at this stage, `settings.decimalPlaces` as been set from the default options\r\n\r\n // Overwrite the `decimalPlaces*` values if the `decimalPlaces*` options are not set in the `settings`\r\n // Sets `decimalPlacesShownOnBlur` (previously known as `scaleDecimalPlaces`)\r\n if (settings.decimalPlacesShownOnFocus === AutoNumeric.options.decimalPlacesShownOnFocus.useDefault) {\r\n settings.decimalPlacesShownOnFocus = settings.decimalPlaces;\r\n }\r\n\r\n if (settings.decimalPlacesShownOnBlur === AutoNumeric.options.decimalPlacesShownOnBlur.useDefault) {\r\n settings.decimalPlacesShownOnBlur = settings.decimalPlaces;\r\n }\r\n\r\n if (settings.decimalPlacesRawValue === AutoNumeric.options.decimalPlacesRawValue.useDefault) {\r\n settings.decimalPlacesRawValue = settings.decimalPlaces;\r\n }\r\n\r\n // Add the additional decimal places to the raw value\r\n let additionalDecimalPlacesRawValue = 0;\r\n if (settings.rawValueDivisor && settings.rawValueDivisor !== AutoNumeric.options.rawValueDivisor.none) {\r\n additionalDecimalPlacesRawValue = String(settings.rawValueDivisor).length - 1; // ie. Dividing by '100' adds 2 decimal places to the needed precision\r\n if (additionalDecimalPlacesRawValue < 0) {\r\n additionalDecimalPlacesRawValue = 0;\r\n }\r\n }\r\n\r\n settings.decimalPlacesRawValue = Math.max(\r\n Math.max(settings.decimalPlacesShownOnBlur, settings.decimalPlacesShownOnFocus) + additionalDecimalPlacesRawValue,\r\n Number(settings.originalDecimalPlacesRawValue) + additionalDecimalPlacesRawValue\r\n );\r\n }\r\n\r\n /**\r\n * Recalculate the number de decimal places to be used by the AutoNumeric object, for each of its state, and for its formatted and raw value.\r\n * By default, the `rawValue` precision is the same as the formatted value one.\r\n *\r\n * This method is close to the one called during initialization, `_calculateDecimalPlacesOnInit()`, but with slight difference so that the `decimalPlaces*` options are correctly updated as needed.\r\n *\r\n * This methods set the following options accordingly to their own value and the mandatory `decimalPlaces` option:\r\n * - decimalPlacesRawValue (nullable)\r\n * - decimalPlacesShownOnBlur (nullable)\r\n * - decimalPlacesShownOnFocus (nullable)\r\n *\r\n * Note: the `decimalPlaces` option is only used here and only serve to define those three previous options value.\r\n * AutoNumeric will then *only* use `decimalPlacesRawValue`, `decimalPlacesShownOnBlur` and `decimalPlacesShownOnFocus` from there.\r\n *\r\n * This methods directly modifies the `settings` object passed as a parameter.\r\n *\r\n * @param {object} settings This is an object with the new settings to use.\r\n * @param {object} currentSettings This is the current settings (`this.settings`) used by the element.\r\n * @private\r\n */\r\n static _calculateDecimalPlacesOnUpdate(settings, currentSettings = null) {\r\n // Check the `decimalPlaces*` options and output any warnings as needed, before modifying those options\r\n this._validateDecimalPlacesRawValue(settings);\r\n\r\n // Update phase\r\n if (AutoNumericHelper.isNull(currentSettings)) {\r\n AutoNumericHelper.throwError(`When updating the settings, the previous ones should be passed as an argument.`);\r\n }\r\n\r\n const decimalPlacesInOptions = \"decimalPlaces\" in settings;\r\n if (\r\n !(\r\n decimalPlacesInOptions ||\r\n \"decimalPlacesRawValue\" in settings ||\r\n \"decimalPlacesShownOnFocus\" in settings ||\r\n \"decimalPlacesShownOnBlur\" in settings ||\r\n \"rawValueDivisor\" in settings\r\n )\r\n ) {\r\n // Do Nothing if no decimal places-related options are modified\r\n return;\r\n }\r\n\r\n // Overwrite the `decimalPlaces*` values if the `decimalPlaces*` options are not set in the `settings`\r\n if (decimalPlacesInOptions) {\r\n if (\r\n !(\"decimalPlacesShownOnFocus\" in settings) ||\r\n settings.decimalPlacesShownOnFocus === AutoNumeric.options.decimalPlacesShownOnFocus.useDefault\r\n ) {\r\n settings.decimalPlacesShownOnFocus = settings.decimalPlaces;\r\n }\r\n\r\n if (\r\n !(\"decimalPlacesShownOnBlur\" in settings) ||\r\n settings.decimalPlacesShownOnBlur === AutoNumeric.options.decimalPlacesShownOnBlur.useDefault\r\n ) {\r\n settings.decimalPlacesShownOnBlur = settings.decimalPlaces;\r\n }\r\n\r\n if (\r\n !(\"decimalPlacesRawValue\" in settings) ||\r\n settings.decimalPlacesRawValue === AutoNumeric.options.decimalPlacesRawValue.useDefault\r\n ) {\r\n settings.decimalPlacesRawValue = settings.decimalPlaces;\r\n }\r\n } else {\r\n if (AutoNumericHelper.isUndefined(settings.decimalPlacesShownOnFocus)) {\r\n settings.decimalPlacesShownOnFocus = currentSettings.decimalPlacesShownOnFocus;\r\n }\r\n\r\n if (AutoNumericHelper.isUndefined(settings.decimalPlacesShownOnBlur)) {\r\n settings.decimalPlacesShownOnBlur = currentSettings.decimalPlacesShownOnBlur;\r\n }\r\n }\r\n\r\n // Add the additional decimal places to the raw value\r\n let additionalDecimalPlacesRawValue = 0;\r\n if (settings.rawValueDivisor && settings.rawValueDivisor !== AutoNumeric.options.rawValueDivisor.none) {\r\n additionalDecimalPlacesRawValue = String(settings.rawValueDivisor).length - 1; // ie. Dividing by '100' adds 2 decimal places to the needed precision\r\n if (additionalDecimalPlacesRawValue < 0) {\r\n additionalDecimalPlacesRawValue = 0;\r\n }\r\n }\r\n\r\n if (!settings.decimalPlaces && !settings.decimalPlacesRawValue) {\r\n settings.decimalPlacesRawValue = Math.max(\r\n Math.max(settings.decimalPlacesShownOnBlur, settings.decimalPlacesShownOnFocus) +\r\n additionalDecimalPlacesRawValue,\r\n Number(currentSettings.originalDecimalPlacesRawValue) + additionalDecimalPlacesRawValue\r\n );\r\n } else {\r\n settings.decimalPlacesRawValue = Math.max(\r\n Math.max(settings.decimalPlacesShownOnBlur, settings.decimalPlacesShownOnFocus) +\r\n additionalDecimalPlacesRawValue,\r\n Number(settings.decimalPlacesRawValue) + additionalDecimalPlacesRawValue\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Analyze and save the minimumValue and maximumValue integer size for later uses\r\n * @private\r\n */\r\n _calculateVMinAndVMaxIntegerSizes() {\r\n let [maximumValueIntegerPart] = this.settings.maximumValue.toString().split(\".\");\r\n let [minimumValueIntegerPart] =\r\n !this.settings.minimumValue && this.settings.minimumValue !== 0\r\n ? []\r\n : this.settings.minimumValue.toString().split(\".\");\r\n maximumValueIntegerPart = maximumValueIntegerPart.replace(this.settings.negativeSignCharacter, \"\");\r\n minimumValueIntegerPart = minimumValueIntegerPart.replace(this.settings.negativeSignCharacter, \"\");\r\n\r\n this.settings.mIntPos = Math.max(maximumValueIntegerPart.length, 1);\r\n this.settings.mIntNeg = Math.max(minimumValueIntegerPart.length, 1);\r\n }\r\n\r\n /**\r\n * Calculate once what are the `valuesToStrings` option keys.\r\n * @private\r\n */\r\n _calculateValuesToStringsKeys() {\r\n if (this.settings.valuesToStrings) {\r\n this.valuesToStringsKeys = Object.keys(this.settings.valuesToStrings);\r\n } else {\r\n this.valuesToStringsKeys = [];\r\n }\r\n }\r\n\r\n /**\r\n * Caches regular expressions for _stripAllNonNumberCharactersExceptCustomDecimalChar\r\n *\r\n * @param {object} settings\r\n * @param {object} regex\r\n */\r\n static _cachesUsualRegularExpressions(settings, regex) {\r\n // Test if there is a negative character in the string\r\n let negativeSignReg;\r\n if (settings.negativeSignCharacter !== AutoNumeric.options.negativeSignCharacter.hyphen) {\r\n negativeSignReg = `([-\\\\${settings.negativeSignCharacter}]?)`;\r\n } else {\r\n negativeSignReg = \"(-?)\";\r\n }\r\n\r\n regex.aNegRegAutoStrip = negativeSignReg;\r\n settings.allowedAutoStrip = new RegExp(`[^-0123456789\\\\${settings.decimalCharacter}]`, \"g\");\r\n settings.numRegAutoStrip = new RegExp(\r\n `${negativeSignReg}(?:\\\\${settings.decimalCharacter}?([0-9]+\\\\${settings.decimalCharacter}[0-9]+)|([0-9]*(?:\\\\${settings.decimalCharacter}[0-9]*)?))`\r\n );\r\n\r\n // Using this regex version `^${regex.aNegRegAutoStrip}0*(\\\\d|$)` entirely clear the input on blur\r\n settings.stripReg = new RegExp(`^${regex.aNegRegAutoStrip}0*([0-9])`);\r\n\r\n // All the characters that are accepted during the formula mode\r\n settings.formulaChars = new RegExp(`[0-9${settings.decimalCharacter}+\\\\-*/() ]`);\r\n }\r\n\r\n /**\r\n * Modify the user settings to make them 'exploitable' later.\r\n */\r\n _transformOptionsValuesToDefaultTypes() {\r\n for (const key in this.settings) {\r\n if (Object.prototype.hasOwnProperty.call(this.settings, key)) {\r\n const value = this.settings[key];\r\n\r\n // Convert the strings 'true' and 'false' to booleans\r\n if (value === \"true\" || value === \"false\") {\r\n this.settings[key] = value === \"true\";\r\n }\r\n\r\n // Convert numbers in options to strings\r\n //TODO Only transform the values of type 'Number' to 'String' if it's a currency number (so that we can have big numbers). Do not convert other numbers (ie. `historySize`)\r\n if (typeof value === \"number\") {\r\n this.settings[key] = value.toString();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Convert the old settings options name to new ones.\r\n *\r\n * @param {object} options\r\n */\r\n static _convertOldOptionsToNewOnes(options) {\r\n //TODO Delete this function once the old options are not used anymore\r\n const oldOptionsConverter = {\r\n // Old option names, with their corresponding new names\r\n aSep: \"digitGroupSeparator\",\r\n nSep: \"showOnlyNumbersOnFocus\",\r\n dGroup: \"digitalGroupSpacing\",\r\n aDec: \"decimalCharacter\",\r\n altDec: \"decimalCharacterAlternative\",\r\n aSign: \"currencySymbol\",\r\n pSign: \"currencySymbolPlacement\",\r\n pNeg: \"negativePositiveSignPlacement\",\r\n aSuffix: \"suffixText\",\r\n oLimits: \"overrideMinMaxLimits\",\r\n vMax: \"maximumValue\",\r\n vMin: \"minimumValue\",\r\n mDec: \"decimalPlacesOverride\",\r\n eDec: \"decimalPlacesShownOnFocus\",\r\n scaleDecimal: \"decimalPlacesShownOnBlur\",\r\n aStor: \"saveValueToSessionStorage\",\r\n mRound: \"roundingMethod\",\r\n aPad: \"allowDecimalPadding\",\r\n nBracket: \"negativeBracketsTypeOnBlur\",\r\n wEmpty: \"emptyInputBehavior\",\r\n lZero: \"leadingZero\",\r\n aForm: \"formatOnPageLoad\",\r\n sNumber: \"selectNumberOnly\",\r\n anDefault: \"defaultValueOverride\",\r\n unSetOnSubmit: \"unformatOnSubmit\",\r\n outputType: \"outputFormat\",\r\n debug: \"showWarnings\",\r\n\r\n // Current options :\r\n allowDecimalPadding: true,\r\n alwaysAllowDecimalCharacter: true,\r\n caretPositionOnFocus: true,\r\n createLocalList: true,\r\n currencySymbol: true,\r\n currencySymbolPlacement: true,\r\n decimalCharacter: true,\r\n decimalCharacterAlternative: true,\r\n decimalPlaces: true,\r\n decimalPlacesRawValue: true,\r\n decimalPlacesShownOnBlur: true,\r\n decimalPlacesShownOnFocus: true,\r\n defaultValueOverride: true,\r\n digitalGroupSpacing: true,\r\n digitGroupSeparator: true,\r\n divisorWhenUnfocused: true,\r\n emptyInputBehavior: true,\r\n eventBubbles: true,\r\n eventIsCancelable: true,\r\n failOnUnknownOption: true,\r\n formatOnPageLoad: true,\r\n formulaMode: true,\r\n historySize: true,\r\n isCancellable: true,\r\n leadingZero: true,\r\n maximumValue: true,\r\n minimumValue: true,\r\n modifyValueOnWheel: true,\r\n negativeBracketsTypeOnBlur: true,\r\n negativePositiveSignPlacement: true,\r\n negativeSignCharacter: true,\r\n noEventListeners: true,\r\n onInvalidPaste: true,\r\n outputFormat: true,\r\n overrideMinMaxLimits: true,\r\n positiveSignCharacter: true,\r\n rawValueDivisor: true,\r\n readOnly: true,\r\n roundingMethod: true,\r\n saveValueToSessionStorage: true,\r\n selectNumberOnly: true,\r\n selectOnFocus: true,\r\n serializeSpaces: true,\r\n showOnlyNumbersOnFocus: true,\r\n showPositiveSign: true,\r\n showWarnings: true,\r\n styleRules: true,\r\n suffixText: true,\r\n symbolWhenUnfocused: true,\r\n unformatOnHover: true,\r\n unformatOnSubmit: true,\r\n valuesToStrings: true,\r\n watchExternalChanges: true,\r\n wheelOn: true,\r\n wheelStep: true,\r\n\r\n // Additional information that are added to the `settings` object :\r\n //TODO Find a way to exclude those internal data from the settings object (ideally by using another object, or better yet, class attributes) -->\r\n allowedAutoStrip: true,\r\n formulaChars: true,\r\n isNegativeSignAllowed: true,\r\n isPositiveSignAllowed: true,\r\n mIntNeg: true,\r\n mIntPos: true,\r\n numRegAutoStrip: true,\r\n originalDecimalPlaces: true,\r\n originalDecimalPlacesRawValue: true,\r\n stripReg: true\r\n };\r\n\r\n for (const option in options) {\r\n if (Object.prototype.hasOwnProperty.call(options, option)) {\r\n if (oldOptionsConverter[option] === true) {\r\n // If the option is a 'new' option, we continue looping\r\n continue;\r\n }\r\n\r\n if (Object.prototype.hasOwnProperty.call(oldOptionsConverter, option)) {\r\n // Else we have an 'old' option name\r\n AutoNumericHelper.warning(\r\n `You are using the deprecated option name '${option}'. Please use '${oldOptionsConverter[option]}' instead from now on. The old option name will be dropped very soonâ„¢.`,\r\n true\r\n );\r\n\r\n // Then we modify the initial option object to use the new options instead of the old ones\r\n options[oldOptionsConverter[option]] = options[option];\r\n delete options[option];\r\n } else if (options.failOnUnknownOption) {\r\n // ...or the option name is unknown. This means there is a problem with the options object, therefore we throw an error.\r\n AutoNumericHelper.throwError(\r\n `Option name '${option}' is unknown. Please fix the options passed to autoNumeric`\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (\"mDec\" in options) {\r\n AutoNumericHelper.warning(\r\n \"The old `mDec` option has been deprecated in favor of more accurate options ; `decimalPlaces`, `decimalPlacesRawValue`, `decimalPlacesShownOnFocus` and `decimalPlacesShownOnBlur`.\",\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Analyse the settings/options passed by the user, validate and clean them, then set them into `this.settings`.\r\n * Note: This sets the settings to `null` if somehow the settings objet is undefined or empty\r\n * If only `decimalPlaces` is defined in the option, overwrite the other decimalPlaces* options, otherwise, use those options\r\n *\r\n * @param {object} options\r\n * @param {boolean} update - If set to `true`, then the settings already exists and this function only updates them instead of recreating them from scratch\r\n * @throws\r\n */\r\n _setSettings(options, update = false) {\r\n // If the user used old options, we convert them to new ones\r\n if (update || !AutoNumericHelper.isNull(options)) {\r\n this.constructor._convertOldOptionsToNewOnes(options);\r\n }\r\n\r\n if (update) {\r\n // The settings are updated\r\n // Update the original data, if it has changed\r\n const decimalPlacesRawValueInOptions = \"decimalPlacesRawValue\" in options;\r\n if (decimalPlacesRawValueInOptions) {\r\n this.settings.originalDecimalPlacesRawValue = options.decimalPlacesRawValue;\r\n }\r\n\r\n const decimalPlacesInOptions = \"decimalPlaces\" in options;\r\n if (decimalPlacesInOptions) {\r\n this.settings.originalDecimalPlaces = options.decimalPlaces;\r\n }\r\n\r\n // Then update all the `decimalPlaces*` options\r\n this.constructor._calculateDecimalPlacesOnUpdate(options, this.settings);\r\n\r\n // Finally generate the updated settings object to use\r\n this._mergeSettings(options); //TODO Check that the `styleRules` option is correctly cloned (due to depth cloning limitation)\r\n } else {\r\n // The settings are generated for the first time\r\n this.settings = {};\r\n // If we couldn't grab any settings, create them from the default ones and combine them with the options passed as a parameter as well as with the HTML5 `data-*` info (via `this.domElement.dataset`), if any.\r\n this._mergeSettings(this.constructor.getDefaultConfig(), this.domElement.dataset, options, {\r\n rawValue: this.defaultRawValue\r\n });\r\n this.caretFix = false;\r\n this.throwInput = true; // Throw input event\r\n this.allowedTagList = AutoNumericEnum.allowedTagList;\r\n this.runOnce = false;\r\n this.hoveredWithAlt = false; // Keep tracks if the current AutoNumeric element is hovered by the mouse cursor while `Alt` is pressed\r\n }\r\n\r\n // Modify the user settings to make them 'exploitable'\r\n this._transformOptionsValuesToDefaultTypes();\r\n\r\n // Immediately run the callbacks that could update the settings object\r\n this._runCallbacksFoundInTheSettingsObject();\r\n\r\n // Improve the `negativePositiveSignPlacement` option if needed\r\n this.constructor._correctNegativePositiveSignPlacementOption(this.settings);\r\n\r\n // Set the `caretPositionOnFocus` and `selectOnFocus` options so that they do not conflict, if one of those have been set manually by the user.\r\n // If order to check that, we take a look at the original options the user passed as an argument, not `this.settings` that have been merged with the default settings. //TODO Check the validity of that comment\r\n this.constructor._correctCaretPositionOnFocusAndSelectOnFocusOptions(this.settings);\r\n\r\n // Define if the negative or positive signs are allowed\r\n this.constructor._setNegativePositiveSignPermissions(this.settings);\r\n\r\n // Calculate the number of decimal places (during the element initialization)\r\n if (!update) {\r\n // Make sure the `originalDecimalPlaces` info is set\r\n if (AutoNumericHelper.isNull(options) || !options.decimalPlaces) {\r\n this.settings.originalDecimalPlaces = null;\r\n } else {\r\n this.settings.originalDecimalPlaces = options.decimalPlaces;\r\n }\r\n\r\n // Save the `originalDecimalPlacesRawValue` info\r\n this.settings.originalDecimalPlacesRawValue = this.settings.decimalPlacesRawValue;\r\n\r\n // Then update all the `decimalPlaces*` options\r\n this.constructor._calculateDecimalPlacesOnInit(this.settings);\r\n }\r\n\r\n // Additional changes to the settings object\r\n this._calculateVMinAndVMaxIntegerSizes();\r\n this._setTrailingNegativeSignInfo();\r\n this.regex = {}; // Create the object that will store the regular expressions\r\n this.constructor._cachesUsualRegularExpressions(this.settings, this.regex);\r\n this.constructor._setBrackets(this.settings);\r\n this._calculateValuesToStringsKeys();\r\n\r\n // Validate the settings. Both tests throws if necessary.\r\n if (AutoNumericHelper.isEmptyObj(this.settings)) {\r\n AutoNumericHelper.throwError(\"Unable to set the settings, those are invalid ; an empty object was given.\");\r\n }\r\n\r\n this.constructor.validate(this.settings, false, options);\r\n\r\n // Original settings saved for use when decimalPlacesShownOnFocus, divisorWhenUnfocused & showOnlyNumbersOnFocus options are being used\r\n this._keepAnOriginalSettingsCopy();\r\n }\r\n\r\n /**\r\n * Define if the negative or positive signs are allowed, and update the given settings object directly.\r\n *\r\n * @param {object} settings\r\n * @private\r\n */\r\n static _setNegativePositiveSignPermissions(settings) {\r\n settings.isNegativeSignAllowed = settings.minimumValue < 0;\r\n settings.isPositiveSignAllowed = settings.maximumValue >= 0;\r\n }\r\n\r\n /**\r\n * Convert the `value` parameter that can either be :\r\n * - a real number,\r\n * - a number represented in the scientific notation (ie. -123.4567e-6)\r\n * - a string representing a real number, or\r\n * - a string representing a localized number (with specific group separators and decimal character),\r\n * ...to a string representing a real 'javascript' number (ie. '1234' or '1234.567').\r\n *\r\n * This function returns `NaN` if such conversion fails.\r\n *\r\n * @param {int|float|string} value\r\n * @param {object} settings\r\n * @returns {string|NaN}\r\n */\r\n static _toNumericValue(value, settings) {\r\n //XXX Note; this function is static since we need to pass a `settings` object when calling the static `AutoNumeric.format()` method\r\n let result;\r\n if (AutoNumericHelper.isNumber(Number(value))) {\r\n // if (settings.decimalCharacter === '.' && AutoNumericHelper.isNumber(Number(value))) {\r\n // The value has either already been stripped, or a 'real' javascript number is passed as a parameter\r\n result = AutoNumericHelper.scientificToDecimal(value);\r\n } else {\r\n // Else if it's a string that `Number()` cannot typecast, then we try to convert the localized numeric string to a numeric one\r\n // Convert the value to a numeric string, stripping unnecessary characters in the process\r\n result = this._convertToNumericString(value.toString(), settings);\r\n\r\n // If the result is still not a numeric string, then we throw a warning\r\n if (!AutoNumericHelper.isNumber(Number(result))) {\r\n AutoNumericHelper.warning(\r\n `The given value \"${value}\" cannot be converted to a numeric one and therefore cannot be used appropriately.`,\r\n settings.showWarnings\r\n );\r\n result = NaN;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Return the pasted text that will be used, by stripping most non-numeric characters\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\n _preparePastedText(text) {\r\n return this.constructor._stripAllNonNumberCharacters(text, this.settings, true, this.isFocused);\r\n }\r\n\r\n /**\r\n * Return TRUE if the given value (a number as a string) is within the range set in the settings `minimumValue` and `maximumValue`, FALSE otherwise.\r\n *\r\n * @param {string} value\r\n * @param {object} parsedMinValue Parsed via the `parseStr()` function\r\n * @param {object} parsedMaxValue Parsed via the `parseStr()` function\r\n * @returns {boolean}\r\n */\r\n static _checkIfInRange(value, parsedMinValue, parsedMaxValue) {\r\n const parsedValue = AutoNumericHelper.parseStr(value);\r\n return (\r\n AutoNumericHelper.testMinMax(parsedMinValue, parsedValue) > -1 &&\r\n AutoNumericHelper.testMinMax(parsedMaxValue, parsedValue) < 1\r\n );\r\n }\r\n\r\n /**\r\n * Update the selection values as well as resets the internal state of the current AutoNumeric object.\r\n * This keeps tracks of the current selection and resets the 'processed' state.\r\n *\r\n * Note : This state can change between the keydown, keypress and keyup events, that's why\r\n * this function is called on each event handler.\r\n *\r\n * @private\r\n */\r\n _updateInternalProperties() {\r\n this.selection = AutoNumericHelper.getElementSelection(this.domElement);\r\n this.processed = false;\r\n }\r\n\r\n /**\r\n * Update the `event.key` attribute that triggered the given event.\r\n *\r\n * `event.key` describes:\r\n * - the key name (if a non-printable character),\r\n * - or directly the character that result from the key press used to trigger the event.\r\n *\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key\r\n * The key list is described here:\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values\r\n *\r\n * @param {Event|KeyboardEvent} e\r\n * @private\r\n */\r\n _updateEventKeyInfo(e) {\r\n this.eventKey = AutoNumericHelper.character(e);\r\n }\r\n\r\n /**\r\n * Save the unformatted element value.\r\n * This is used in the 'cancellable' feature where the element value is saved on focus and input validation, to be used if the user wants to cancel his modifications by hitting the 'Escape' key.\r\n *\r\n * @private\r\n */\r\n _saveCancellableValue() {\r\n this.savedCancellableValue = this.rawValue;\r\n }\r\n\r\n /**\r\n * Set the text selection inside the input with the given start and end position.\r\n *\r\n * @param {int} start\r\n * @param {int} end\r\n * @private\r\n */\r\n _setSelection(start, end) {\r\n //TODO use this function to replace the direct calls to `setElementSelection()`, wherever possible\r\n start = Math.max(start, 0);\r\n end = Math.min(end, AutoNumericHelper.getElementValue(this.domElement).length);\r\n this.selection = {\r\n start,\r\n end,\r\n length: end - start\r\n };\r\n\r\n AutoNumericHelper.setElementSelection(this.domElement, start, end);\r\n }\r\n\r\n /**\r\n * Set the caret position inside the input at the given position.\r\n *\r\n * @param {int} position\r\n * @private\r\n */\r\n _setCaretPosition(position) {\r\n this._setSelection(position, position);\r\n }\r\n\r\n /**\r\n * Return an array containing the string parts located on the left and right side of the caret or selection.\r\n * Those parts are left 'untouched', ie. formatted by autoNumeric.\r\n *\r\n * @returns {[string, string]} The parts on the left and right of the caret or selection\r\n * @private\r\n */\r\n _getLeftAndRightPartAroundTheSelection() {\r\n const value = AutoNumericHelper.getElementValue(this.domElement);\r\n const left = value.substring(0, this.selection.start);\r\n const right = value.substring(this.selection.end, value.length);\r\n\r\n return [left, right];\r\n }\r\n\r\n /**\r\n * Return an array containing the string parts located on the left and right side of the caret or selection.\r\n * Those parts are unformatted (stripped) of any non-numbers characters, and any trailing negative character is put back on the left hand side of the number.\r\n *\r\n * @returns {[string, string]} The parts on the left and right of the caret or selection, unformatted.\r\n * @private\r\n */\r\n _getUnformattedLeftAndRightPartAroundTheSelection() {\r\n let [left, right] = this._getLeftAndRightPartAroundTheSelection();\r\n if (left === \"\" && right === \"\") {\r\n return [\"\", \"\"];\r\n }\r\n\r\n // If changing the sign and `left` is equal to the number zero, prevent stripping the leading zero(s)\r\n let stripZeros = true;\r\n if (\r\n (this.eventKey === AutoNumericEnum.keyName.Hyphen || this.eventKey === AutoNumericEnum.keyName.Minus) &&\r\n Number(left) === 0\r\n ) {\r\n stripZeros = false;\r\n }\r\n\r\n //TODO DRY that with `_normalizeParts()` -->\r\n if (\r\n this.isTrailingNegative &&\r\n ((AutoNumericHelper.isNegative(right, this.settings.negativeSignCharacter) && // The caret is placed on the left of the negative sign\r\n !AutoNumericHelper.isNegative(left, this.settings.negativeSignCharacter)) ||\r\n (right === \"\" && // ..or the caret is placed on the far right of the input (Fix issue #481)\r\n AutoNumericHelper.isNegative(left, this.settings.negativeSignCharacter, true)))\r\n ) {\r\n left = left.replace(this.settings.negativeSignCharacter, \"\");\r\n right = right.replace(this.settings.negativeSignCharacter, \"\");\r\n // This is done here because `_getUnformattedLeftAndRightPartAroundTheSelection()` is called multiple times during the same key event, and at one point the left/right value has been normalized already..\r\n left = left.replace(\"-\", \"\");\r\n right = right.replace(\"-\", \"\");\r\n\r\n // Then finally set back the normalized minus character at the right place\r\n left = `-${left}`;\r\n }\r\n\r\n left = AutoNumeric._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n left,\r\n this.settings,\r\n stripZeros,\r\n this.isFocused\r\n );\r\n right = AutoNumeric._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n right,\r\n this.settings,\r\n false,\r\n this.isFocused\r\n );\r\n\r\n return [left, right];\r\n }\r\n\r\n /**\r\n * Strip parts from excess characters and leading zeros.\r\n *\r\n * @param {string} left\r\n * @param {string} right\r\n * @returns {[*,*,*]}\r\n * @private\r\n */\r\n _normalizeParts(left, right) {\r\n //TODO Refactor with `_getUnformattedLeftAndRightPartAroundTheSelection` which share a lot of similar code\r\n // If changing the sign and left is equal to the number zero - prevents stripping the leading zeros\r\n let stripZeros = true;\r\n if (\r\n (this.eventKey === AutoNumericEnum.keyName.Hyphen || this.eventKey === AutoNumericEnum.keyName.Minus) &&\r\n Number(left) === 0\r\n ) {\r\n stripZeros = false;\r\n }\r\n\r\n if (\r\n this.isTrailingNegative &&\r\n AutoNumericHelper.isNegative(right, this.settings.negativeSignCharacter) &&\r\n !AutoNumericHelper.isNegative(left, this.settings.negativeSignCharacter)\r\n ) {\r\n // Only set the negative sign if the value is negative\r\n left = `-${left}`;\r\n right = right.replace(this.settings.negativeSignCharacter, \"\");\r\n }\r\n\r\n left = AutoNumeric._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n left,\r\n this.settings,\r\n stripZeros,\r\n this.isFocused\r\n );\r\n right = AutoNumeric._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n right,\r\n this.settings,\r\n false,\r\n this.isFocused\r\n );\r\n\r\n // Prevents multiple leading zeros from being entered\r\n if (\r\n this.settings.leadingZero === AutoNumeric.options.leadingZero.deny &&\r\n (this.eventKey === AutoNumericEnum.keyName.num0 || this.eventKey === AutoNumericEnum.keyName.numpad0) &&\r\n Number(left) === 0 &&\r\n // If `right` is not empty and the first character is not `decimalCharacter`\r\n !AutoNumericHelper.contains(left, this.settings.decimalCharacter) &&\r\n right !== \"\"\r\n ) {\r\n left = left.substring(0, left.length - 1);\r\n }\r\n\r\n // Insert zero there is a leading dot\r\n let newValue = left + right;\r\n if (this.settings.decimalCharacter) {\r\n const m = newValue.match(new RegExp(`^${this.regex.aNegRegAutoStrip}\\\\${this.settings.decimalCharacter}`));\r\n if (m) {\r\n left = left.replace(m[1], m[1] + \"0\");\r\n newValue = left + right;\r\n }\r\n }\r\n\r\n return [left, right, newValue];\r\n }\r\n\r\n /**\r\n * Set the formatted element value as well as the `rawValue`.\r\n * This returns `true` if the element and raw value have been modified, `false` otherwise.\r\n * This method also adjust the caret position according to the `leadingZero` option and the normalized value. //TODO What about the cursor *selection*?\r\n *\r\n * @param {string} left\r\n * @param {string} right\r\n * @param {boolean} isPaste\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _setValueParts(left, right, isPaste = false) {\r\n const [normalizedLeft, normalizedRight, normalizedNewValue] = this._normalizeParts(left, right);\r\n const [minTest, maxTest] = AutoNumeric._checkIfInRangeWithOverrideOption(normalizedNewValue, this.settings);\r\n\r\n if (minTest && maxTest) {\r\n // First, set the raw value\r\n const roundedRawValue = AutoNumeric._truncateDecimalPlaces(\r\n normalizedNewValue,\r\n this.settings,\r\n isPaste,\r\n this.settings.decimalPlacesRawValue\r\n );\r\n const testValue = roundedRawValue.replace(this.settings.decimalCharacter, \".\");\r\n\r\n if (testValue === \"\" || testValue === this.settings.negativeSignCharacter) {\r\n let valueToSetOnEmpty;\r\n switch (this.settings.emptyInputBehavior) {\r\n case AutoNumeric.options.emptyInputBehavior.focus:\r\n case AutoNumeric.options.emptyInputBehavior.press:\r\n case AutoNumeric.options.emptyInputBehavior.always:\r\n valueToSetOnEmpty = \"\";\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.min:\r\n valueToSetOnEmpty = this.settings.minimumValue;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.max:\r\n valueToSetOnEmpty = this.settings.maximumValue;\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.zero:\r\n valueToSetOnEmpty = \"0\";\r\n break;\r\n case AutoNumeric.options.emptyInputBehavior.null:\r\n valueToSetOnEmpty = null;\r\n break;\r\n // When `emptyInputBehavior` is a number or a string representing a number\r\n default:\r\n valueToSetOnEmpty = this.settings.emptyInputBehavior;\r\n }\r\n\r\n this._setRawValue(valueToSetOnEmpty);\r\n } else {\r\n this._setRawValue(this._trimLeadingAndTrailingZeros(testValue));\r\n }\r\n\r\n // Then set the formatted value\r\n const roundedValueToShow = AutoNumeric._truncateDecimalPlaces(\r\n normalizedNewValue,\r\n this.settings,\r\n isPaste,\r\n this.settings.decimalPlacesShownOnFocus\r\n );\r\n let position = normalizedLeft.length;\r\n if (position > roundedValueToShow.length) {\r\n position = roundedValueToShow.length;\r\n }\r\n\r\n // Make sure when the user enter a '0' on the far left with a leading zero option set to 'deny', that the caret does not moves since the input is dropped (fix issue #283)\r\n if (\r\n position === 1 &&\r\n normalizedLeft === \"0\" &&\r\n this.settings.leadingZero === AutoNumeric.options.leadingZero.deny\r\n ) {\r\n // If the user enter `0`, then the caret is put on the right side of it (Fix issue #299)\r\n if (normalizedRight === \"\" || (normalizedLeft === \"0\" && normalizedRight !== \"\")) {\r\n position = 1;\r\n } else {\r\n position = 0;\r\n }\r\n }\r\n\r\n this._setElementValue(roundedValueToShow, false);\r\n this._setCaretPosition(position);\r\n\r\n return true;\r\n }\r\n\r\n this._triggerRangeEvents(minTest, maxTest);\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Helper function for `_expandSelectionOnSign()`.\r\n *\r\n * @returns {Array} Array containing [signPosition, currencySymbolPosition] of a formatted value\r\n * @private\r\n */\r\n _getSignPosition() {\r\n let result;\r\n if (this.settings.currencySymbol) {\r\n const currencySymbolLen = this.settings.currencySymbol.length;\r\n const value = AutoNumericHelper.getElementValue(this.domElement);\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix) {\r\n const hasNeg =\r\n this.settings.negativeSignCharacter && value && value.charAt(0) === this.settings.negativeSignCharacter;\r\n if (hasNeg) {\r\n result = [1, currencySymbolLen + 1];\r\n } else {\r\n result = [0, currencySymbolLen];\r\n }\r\n } else {\r\n const valueLen = value.length;\r\n result = [valueLen - currencySymbolLen, valueLen];\r\n }\r\n } else {\r\n result = [1000, -1];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Expands selection to cover whole sign\r\n * Prevents partial deletion/copying/overwriting of a sign\r\n * @private\r\n */\r\n _expandSelectionOnSign() {\r\n const [signPosition, currencySymbolPosition] = this._getSignPosition();\r\n const selection = this.selection;\r\n\r\n // If selection catches something except sign and catches only space from sign\r\n if (selection.start < currencySymbolPosition && selection.end > signPosition) {\r\n // Then select without empty space\r\n if (\r\n (selection.start < signPosition || selection.end > currencySymbolPosition) &&\r\n AutoNumericHelper.getElementValue(this.domElement)\r\n .substring(Math.max(selection.start, signPosition), Math.min(selection.end, currencySymbolPosition))\r\n .match(/^\\s*$/)\r\n ) {\r\n if (selection.start < signPosition) {\r\n this._setSelection(selection.start, signPosition);\r\n } else {\r\n this._setSelection(currencySymbolPosition, selection.end);\r\n }\r\n } else {\r\n // Else select with whole sign\r\n this._setSelection(Math.min(selection.start, signPosition), Math.max(selection.end, currencySymbolPosition));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Try to strip pasted value to digits\r\n */\r\n _checkPaste() {\r\n // Do not process anything if the value has already been formatted\r\n if (this.formatted) {\r\n return;\r\n }\r\n\r\n if (!AutoNumericHelper.isUndefined(this.valuePartsBeforePaste)) {\r\n const oldParts = this.valuePartsBeforePaste;\r\n const [left, right] = this._getLeftAndRightPartAroundTheSelection();\r\n\r\n // Try to strip the pasted value first\r\n delete this.valuePartsBeforePaste;\r\n\r\n const modifiedLeftPart =\r\n left.substr(0, oldParts[0].length) +\r\n AutoNumeric._stripAllNonNumberCharactersExceptCustomDecimalChar(\r\n left.substr(oldParts[0].length),\r\n this.settings,\r\n true,\r\n this.isFocused\r\n );\r\n if (!this._setValueParts(modifiedLeftPart, right, true)) {\r\n this._setElementValue(oldParts.join(\"\"), false);\r\n this._setCaretPosition(oldParts[0].length);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Return `true` if the given key should be ignored or not.\r\n *\r\n * @param {string} eventKeyName\r\n * @returns {boolean}\r\n * @private\r\n */\r\n static _shouldSkipEventKey(eventKeyName) {\r\n const isFnKeys = AutoNumericHelper.isInArray(eventKeyName, AutoNumericEnum.keyName._allFnKeys);\r\n const isOSKeys =\r\n eventKeyName === AutoNumericEnum.keyName.OSLeft || eventKeyName === AutoNumericEnum.keyName.OSRight;\r\n const isContextMenu = eventKeyName === AutoNumericEnum.keyName.ContextMenu;\r\n const isSomeNonPrintableKeys = AutoNumericHelper.isInArray(\r\n eventKeyName,\r\n AutoNumericEnum.keyName._someNonPrintableKeys\r\n );\r\n const isOtherNonPrintableKeys =\r\n eventKeyName === AutoNumericEnum.keyName.NumLock ||\r\n eventKeyName === AutoNumericEnum.keyName.ScrollLock ||\r\n eventKeyName === AutoNumericEnum.keyName.Insert ||\r\n eventKeyName === AutoNumericEnum.keyName.Command;\r\n const isUnrecognizableKeys = eventKeyName === AutoNumericEnum.keyName.Unidentified;\r\n\r\n return (\r\n isFnKeys || isOSKeys || isContextMenu || isSomeNonPrintableKeys || isUnrecognizableKeys || isOtherNonPrintableKeys\r\n );\r\n }\r\n\r\n /**\r\n * Process copying, cutting and pasting, as well as undo/redoing and cursor moving.\r\n * Return `true` if further processing should not be performed.\r\n *\r\n * @param {KeyboardEvent} e\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _processNonPrintableKeysAndShortcuts(e) {\r\n // Catch the ctrl up on ctrl-v\r\n if (\r\n ((e.ctrlKey || e.metaKey) && e.type === \"keyup\" && !AutoNumericHelper.isUndefined(this.valuePartsBeforePaste)) ||\r\n (e.shiftKey && this.eventKey === AutoNumericEnum.keyName.Insert)\r\n ) {\r\n //TODO Move this test inside the `onKeyup` handler\r\n this._checkPaste();\r\n\r\n return false;\r\n }\r\n\r\n // Skip all function keys (F1-F12), Windows keys, tab and other special keys\r\n if (this.constructor._shouldSkipEventKey(this.eventKey)) {\r\n return true;\r\n }\r\n\r\n // If a \"Select all\" keyboard shortcut is detected (ctrl + a)\r\n if ((e.ctrlKey || e.metaKey) && this.eventKey === AutoNumericEnum.keyName.a) {\r\n if (this.settings.selectNumberOnly) {\r\n // `preventDefault()` is used here to prevent the browser to first select all the input text (including the currency sign), otherwise we would see that whole selection first in a flash, then the selection with only the number part without the currency sign.\r\n e.preventDefault();\r\n //TODO replace `selectNumber` by `select`?\r\n this.selectNumber();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // If a \"Copy\", \"Paste\" or \"Cut\" keyboard shortcut is detected (respectively 'ctrl + c', 'ctrl + v' or 'ctrl + x')\r\n if (\r\n (e.ctrlKey || e.metaKey) &&\r\n (this.eventKey === AutoNumericEnum.keyName.c ||\r\n this.eventKey === AutoNumericEnum.keyName.v ||\r\n this.eventKey === AutoNumericEnum.keyName.x)\r\n ) {\r\n if (e.type === \"keydown\") {\r\n this._expandSelectionOnSign();\r\n }\r\n\r\n // Try to prevent wrong paste\r\n if (this.eventKey === AutoNumericEnum.keyName.v || this.eventKey === AutoNumericEnum.keyName.Insert) {\r\n if (e.type === \"keydown\" || e.type === \"keypress\") {\r\n if (AutoNumericHelper.isUndefined(this.valuePartsBeforePaste)) {\r\n this.valuePartsBeforePaste = this._getLeftAndRightPartAroundTheSelection();\r\n }\r\n } else {\r\n this._checkPaste();\r\n }\r\n }\r\n\r\n return e.type === \"keydown\" || e.type === \"keypress\" || this.eventKey === AutoNumericEnum.keyName.c;\r\n }\r\n\r\n // If the ctrl/meta key is used (during the undo shortcut for instance)\r\n if (e.ctrlKey || e.metaKey) {\r\n return !(this.eventKey === AutoNumericEnum.keyName.Z || this.eventKey === AutoNumericEnum.keyName.z);\r\n }\r\n\r\n // Jump over the thousand separator\r\n //TODO Move this test inside the `onKeydown` handler\r\n if (this.eventKey === AutoNumericEnum.keyName.LeftArrow || this.eventKey === AutoNumericEnum.keyName.RightArrow) {\r\n if (e.type === \"keydown\" && !e.shiftKey) {\r\n const value = AutoNumericHelper.getElementValue(this.domElement);\r\n if (\r\n this.eventKey === AutoNumericEnum.keyName.LeftArrow &&\r\n (value.charAt(this.selection.start - 2) === this.settings.digitGroupSeparator ||\r\n value.charAt(this.selection.start - 2) === this.settings.decimalCharacter)\r\n ) {\r\n this._setCaretPosition(this.selection.start - 1);\r\n } else if (\r\n this.eventKey === AutoNumericEnum.keyName.RightArrow &&\r\n (value.charAt(this.selection.start + 1) === this.settings.digitGroupSeparator ||\r\n value.charAt(this.selection.start + 1) === this.settings.decimalCharacter)\r\n ) {\r\n this._setCaretPosition(this.selection.start + 1);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return AutoNumericHelper.isInArray(this.eventKey, AutoNumericEnum.keyName._directionKeys);\r\n }\r\n\r\n /**\r\n * Process deletion of characters when the minus sign is to the right of the numeric characters.\r\n *\r\n * @param {string[]} leftAndRight The parts on the left and on the right of the caret or selection as an array with [left, right]\r\n * @returns {string[]} Processed left and right as an array with [left, right]\r\n * @private\r\n */\r\n _processCharacterDeletionIfTrailingNegativeSign([left, right]) {\r\n const value = AutoNumericHelper.getElementValue(this.domElement);\r\n const isValNegative = AutoNumericHelper.isNegative(value, this.settings.negativeSignCharacter);\r\n\r\n if (\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.suffix\r\n ) {\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace) {\r\n this.caretFix =\r\n this.selection.start >= value.indexOf(this.settings.suffixText) && this.settings.suffixText !== \"\";\r\n if (value.charAt(this.selection.start - 1) === \"-\") {\r\n left = left.substring(1);\r\n } else if (this.selection.start <= value.length - this.settings.suffixText.length) {\r\n left = left.substring(0, left.length - 1);\r\n }\r\n } else {\r\n this.caretFix =\r\n this.selection.start >= value.indexOf(this.settings.suffixText) && this.settings.suffixText !== \"\";\r\n if (this.selection.start >= value.indexOf(this.settings.currencySymbol) + this.settings.currencySymbol.length) {\r\n right = right.substring(1, right.length);\r\n }\r\n if (\r\n AutoNumericHelper.isNegative(left, this.settings.negativeSignCharacter) &&\r\n value.charAt(this.selection.start) === \"-\"\r\n ) {\r\n left = left.substring(1);\r\n }\r\n }\r\n }\r\n\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n switch (this.settings.negativePositiveSignPlacement) {\r\n case AutoNumeric.options.negativePositiveSignPlacement.left:\r\n this.caretFix =\r\n this.selection.start >=\r\n value.indexOf(this.settings.negativeSignCharacter) + this.settings.negativeSignCharacter.length;\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace) {\r\n if (\r\n this.selection.start ===\r\n value.indexOf(this.settings.negativeSignCharacter) + this.settings.negativeSignCharacter.length &&\r\n isValNegative\r\n ) {\r\n left = left.substring(1);\r\n } else if (\r\n left !== \"-\" &&\r\n (this.selection.start <= value.indexOf(this.settings.negativeSignCharacter) || !isValNegative)\r\n ) {\r\n left = left.substring(0, left.length - 1);\r\n }\r\n } else {\r\n if (left[0] === \"-\") {\r\n right = right.substring(1);\r\n }\r\n if (this.selection.start === value.indexOf(this.settings.negativeSignCharacter) && isValNegative) {\r\n left = left.substring(1);\r\n }\r\n }\r\n break;\r\n case AutoNumeric.options.negativePositiveSignPlacement.right:\r\n this.caretFix =\r\n this.selection.start >=\r\n value.indexOf(this.settings.negativeSignCharacter) + this.settings.negativeSignCharacter.length;\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace) {\r\n if (\r\n this.selection.start ===\r\n value.indexOf(this.settings.negativeSignCharacter) + this.settings.negativeSignCharacter.length\r\n ) {\r\n left = left.substring(1);\r\n } else if (\r\n left !== \"-\" &&\r\n this.selection.start <=\r\n value.indexOf(this.settings.negativeSignCharacter) - this.settings.currencySymbol.length\r\n ) {\r\n left = left.substring(0, left.length - 1);\r\n } else if (left !== \"\" && !isValNegative) {\r\n left = left.substring(0, left.length - 1);\r\n }\r\n } else {\r\n this.caretFix =\r\n this.selection.start >= value.indexOf(this.settings.currencySymbol) &&\r\n this.settings.currencySymbol !== \"\";\r\n if (this.selection.start === value.indexOf(this.settings.negativeSignCharacter)) {\r\n left = left.substring(1);\r\n }\r\n\r\n right = right.substring(1);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return [left, right];\r\n }\r\n\r\n /**\r\n * Process the deletion of characters.\r\n * Returns `true` if the deletion is allowed (within the min and max range, according to the `overrideMinMaxLimits` option, `false` otherwise.\r\n *\r\n * @returns {boolean}\r\n */\r\n _processCharacterDeletion() {\r\n let left;\r\n let right;\r\n\r\n if (!this.selection.length) {\r\n [left, right] = this._getUnformattedLeftAndRightPartAroundTheSelection();\r\n if (left === \"\" && right === \"\") {\r\n this.throwInput = false;\r\n }\r\n\r\n if (\r\n this.isTrailingNegative &&\r\n AutoNumericHelper.isNegative(\r\n AutoNumericHelper.getElementValue(this.domElement),\r\n this.settings.negativeSignCharacter\r\n )\r\n ) {\r\n [left, right] = this._processCharacterDeletionIfTrailingNegativeSign([left, right]);\r\n } else {\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace) {\r\n left = left.substring(0, left.length - 1);\r\n } else {\r\n right = right.substring(1, right.length);\r\n }\r\n }\r\n } else {\r\n this._expandSelectionOnSign();\r\n [left, right] = this._getUnformattedLeftAndRightPartAroundTheSelection();\r\n }\r\n\r\n if (!this.constructor._isWithinRangeWithOverrideOption(`${left}${right}`, this.settings)) {\r\n // If the result with the deletion would be out of the range, we prevent it\r\n return false;\r\n }\r\n\r\n this._setValueParts(left, right);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Return `true` if a decimal character is allowed to be typed.\r\n * If the number of decimal places shown on focus is zero, then the decimal character is not allowed.\r\n *\r\n * @returns {boolean}\r\n * @private\r\n */\r\n _isDecimalCharacterInsertionAllowed() {\r\n return (\r\n String(this.settings.decimalPlacesShownOnFocus) !== String(AutoNumeric.options.decimalPlacesShownOnFocus.none) &&\r\n String(this.settings.decimalPlaces) !== String(AutoNumeric.options.decimalPlaces.none)\r\n );\r\n }\r\n\r\n /**\r\n * Return `true` if the key is allowed.\r\n * This function decides if the key pressed should be dropped or accepted, and modify the value 'on-the-fly' accordingly.\r\n * //TODO This should use another function in order to separate the test and the modification\r\n *\r\n * @returns {boolean}\r\n */\r\n _processCharacterInsertion() {\r\n let [left, right] = this._getUnformattedLeftAndRightPartAroundTheSelection();\r\n if (this.eventKey !== AutoNumericEnum.keyName.AndroidDefault) {\r\n this.throwInput = true;\r\n }\r\n\r\n // Start rules when the decimal character key is pressed always use numeric pad dot to insert decimal separator\r\n // Do not allow decimal character if no decimal part allowed\r\n if (\r\n this.eventKey === this.settings.decimalCharacter ||\r\n (this.settings.decimalCharacterAlternative && this.eventKey === this.settings.decimalCharacterAlternative)\r\n ) {\r\n if (!this._isDecimalCharacterInsertionAllowed() || !this.settings.decimalCharacter) {\r\n return false;\r\n }\r\n\r\n if (this.settings.alwaysAllowDecimalCharacter) {\r\n // Remove any previous decimal character\r\n left = left.replace(this.settings.decimalCharacter, \"\");\r\n right = right.replace(this.settings.decimalCharacter, \"\");\r\n } else {\r\n // Do not allow a decimal character if another decimal character is already present\r\n if (AutoNumericHelper.contains(left, this.settings.decimalCharacter)) {\r\n return true;\r\n }\r\n\r\n // Prevent adding a decimal character at the far right of the number\r\n if (right.indexOf(this.settings.decimalCharacter) > 0) {\r\n return true;\r\n }\r\n\r\n // Remove the decimal character is found on the far left of the right part\r\n if (right.indexOf(this.settings.decimalCharacter) === 0) {\r\n right = right.substr(1);\r\n }\r\n }\r\n\r\n // If the user is trying to add a decimal character on the far left of the number, we allow it\r\n if (\r\n this.settings.negativeSignCharacter &&\r\n AutoNumericHelper.contains(right, this.settings.negativeSignCharacter)\r\n ) {\r\n // We need however to move the negative sign from the right to the left part\r\n left = `${this.settings.negativeSignCharacter}${left}`;\r\n right = right.replace(this.settings.negativeSignCharacter, \"\");\r\n }\r\n\r\n this._setValueParts(left + this.settings.decimalCharacter, right);\r\n\r\n return true;\r\n }\r\n\r\n // Prevent entering the minus sign if it's not allowed (Note: `this.settings.isNegativeSignAllowed` is only set to `true` if the minimumValue is lower than zero, allowing negative numbers to be entered)\r\n if ((this.eventKey === \"-\" || this.eventKey === \"+\") && this.settings.isNegativeSignAllowed) {\r\n // Here, the left and right parts have been normalized already, hence the minus sign usage\r\n if (left === \"\" && AutoNumericHelper.contains(right, \"-\")) {\r\n // The value is originally negative (with a trailing negative sign)\r\n right = right.replace(\"-\", \"\");\r\n } else if (AutoNumericHelper.isNegativeStrict(left, \"-\")) {\r\n // The value is originally negative (with a leading negative sign)\r\n // Remove the negative sign, effectively converting the value to a positive one\r\n left = left.replace(\"-\", \"\"); //TODO replace with '+' if `showPositiveSign` too?\r\n } else {\r\n // The value is originally positive, so we toggle the state to a negative one (unformatted, which means even with a trailing negative sign, we add the minus sign on the far left)\r\n left = `${this.settings.negativeSignCharacter}${left}`;\r\n }\r\n\r\n this._setValueParts(left, right);\r\n\r\n return true;\r\n }\r\n\r\n const eventNumber = Number(this.eventKey);\r\n if (eventNumber >= 0 && eventNumber <= 9) {\r\n // If the user tries to insert a digit\r\n if (this.settings.isNegativeSignAllowed && left === \"\" && AutoNumericHelper.contains(right, \"-\")) {\r\n // ...and that digit is before the minus sign\r\n left = \"-\";\r\n right = right.substring(1, right.length);\r\n }\r\n\r\n if (\r\n this.settings.maximumValue <= 0 &&\r\n this.settings.minimumValue < this.settings.maximumValue &&\r\n !AutoNumericHelper.contains(\r\n AutoNumericHelper.getElementValue(this.domElement),\r\n this.settings.negativeSignCharacter\r\n ) &&\r\n this.eventKey !== \"0\"\r\n ) {\r\n left = `-${left}`;\r\n }\r\n\r\n this._setValueParts(`${left}${this.eventKey}`, right);\r\n\r\n return true;\r\n }\r\n\r\n // Prevent any other characters\r\n this.throwInput = false;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Formatting of just processed value while keeping the cursor position\r\n *\r\n * @param {Event} e\r\n * @private\r\n */\r\n _formatValue(e) {\r\n //TODO Break apart and simplify this really long function\r\n const elementValue = AutoNumericHelper.getElementValue(this.domElement);\r\n let [left] = this._getUnformattedLeftAndRightPartAroundTheSelection();\r\n\r\n // No grouping separator and no currency sign\r\n if (\r\n (this.settings.digitGroupSeparator === \"\" ||\r\n (this.settings.digitGroupSeparator !== \"\" &&\r\n !AutoNumericHelper.contains(elementValue, this.settings.digitGroupSeparator))) &&\r\n (this.settings.currencySymbol === \"\" ||\r\n (this.settings.currencySymbol !== \"\" &&\r\n !AutoNumericHelper.contains(elementValue, this.settings.currencySymbol)))\r\n ) {\r\n let [subParts] = elementValue.split(this.settings.decimalCharacter);\r\n let negativeSign = \"\";\r\n if (AutoNumericHelper.isNegative(subParts, this.settings.negativeSignCharacter)) {\r\n negativeSign = this.settings.negativeSignCharacter;\r\n subParts = subParts.replace(this.settings.negativeSignCharacter, \"\");\r\n left = left.replace(\"-\", \"\"); // Here we modify the unformatted value (with the 'normal' minus sign)\r\n }\r\n\r\n // Strip leading zero on positive value if needed\r\n if (negativeSign === \"\" && subParts.length > this.settings.mIntPos && left.charAt(0) === \"0\") {\r\n left = left.slice(1);\r\n }\r\n\r\n // Strip leading zero on negative value if needed\r\n if (\r\n negativeSign === this.settings.negativeSignCharacter &&\r\n subParts.length > this.settings.mIntNeg &&\r\n left.charAt(0) === \"0\"\r\n ) {\r\n left = left.slice(1);\r\n }\r\n\r\n if (!this.isTrailingNegative) {\r\n // Only add the minus sign if it's needed on that side of the numbers\r\n left = `${negativeSign}${left}`;\r\n }\r\n }\r\n\r\n const value = this.constructor._addGroupSeparators(elementValue, this.settings, this.isFocused, this.rawValue);\r\n let position = value.length;\r\n if (value) {\r\n // Prepare regexp which searches for cursor position from unformatted left part\r\n const leftAr = left.split(\"\");\r\n\r\n // Fixes caret position with trailing minus sign\r\n if (\r\n (this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.suffix ||\r\n (this.settings.negativePositiveSignPlacement !== AutoNumeric.options.negativePositiveSignPlacement.prefix &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix)) &&\r\n leftAr[0] === this.settings.negativeSignCharacter &&\r\n !this.settings.isNegativeSignAllowed\r\n ) {\r\n leftAr.shift(); // Remove the negative sign character\r\n\r\n if (\r\n (this.eventKey === AutoNumericEnum.keyName.Backspace || this.eventKey === AutoNumericEnum.keyName.Delete) &&\r\n this.caretFix\r\n ) {\r\n if (\r\n (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.left) ||\r\n (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.suffix)\r\n ) {\r\n leftAr.push(this.settings.negativeSignCharacter);\r\n this.caretFix = e.type === \"keydown\";\r\n }\r\n\r\n if (\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix &&\r\n this.settings.negativePositiveSignPlacement === AutoNumeric.options.negativePositiveSignPlacement.right\r\n ) {\r\n const signParts = this.settings.currencySymbol.split(\"\");\r\n const escapeChr = [\"\\\\\", \"^\", \"$\", \".\", \"|\", \"?\", \"*\", \"+\", \"(\", \")\", \"[\"];\r\n const escapedParts = [];\r\n signParts.forEach((i, miniParts) => {\r\n miniParts = signParts[i];\r\n if (AutoNumericHelper.isInArray(miniParts, escapeChr)) {\r\n escapedParts.push(\"\\\\\" + miniParts);\r\n } else {\r\n escapedParts.push(miniParts);\r\n }\r\n });\r\n\r\n if (this.eventKey === AutoNumericEnum.keyName.Backspace && this.settings.negativeSignCharacter === \"-\") {\r\n escapedParts.push(\"-\");\r\n }\r\n\r\n // Pushing the escaped sign\r\n leftAr.push(escapedParts.join(\"\"));\r\n this.caretFix = e.type === \"keydown\";\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < leftAr.length; i++) {\r\n if (!leftAr[i].match(\"\\\\d\")) {\r\n leftAr[i] = \"\\\\\" + leftAr[i];\r\n }\r\n }\r\n\r\n let leftReg;\r\n if (this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix) {\r\n leftReg = new RegExp(`^.*?${leftAr.join(\".*?\")}`);\r\n } else {\r\n // prefix is assumed\r\n leftReg = new RegExp(`^.*?${this.settings.currencySymbol}${leftAr.join(\".*?\")}`); // Fixes issue #647 when using a currency that has some characters in it that matches the value we just entered (ie. numbers in the currency)\r\n }\r\n\r\n // Search cursor position in formatted value\r\n const newLeft = value.match(leftReg);\r\n if (newLeft) {\r\n position = newLeft[0].length;\r\n\r\n // If the positive sign is shown, calculate the caret position accordingly\r\n if (this.settings.showPositiveSign) {\r\n if (position === 0 && newLeft.input.charAt(0) === this.settings.positiveSignCharacter) {\r\n position =\r\n newLeft.input.indexOf(this.settings.currencySymbol) === 1 ? this.settings.currencySymbol.length + 1 : 1;\r\n }\r\n\r\n if (\r\n position === 0 &&\r\n newLeft.input.charAt(this.settings.currencySymbol.length) === this.settings.positiveSignCharacter\r\n ) {\r\n position = this.settings.currencySymbol.length + 1;\r\n }\r\n }\r\n\r\n // If we are just before the sign which is in prefix position\r\n if (\r\n ((position === 0 && value.charAt(0) !== this.settings.negativeSignCharacter) ||\r\n (position === 1 && value.charAt(0) === this.settings.negativeSignCharacter)) &&\r\n this.settings.currencySymbol &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.prefix\r\n ) {\r\n // Place caret after prefix sign\r\n //TODO Should the test be 'isNegative' instead of 'isNegativeStrict' in order to search for '-' everywhere in the string?\r\n position =\r\n this.settings.currencySymbol.length +\r\n (AutoNumericHelper.isNegativeStrict(value, this.settings.negativeSignCharacter) ? 1 : 0);\r\n }\r\n } else {\r\n if (\r\n this.settings.currencySymbol &&\r\n this.settings.currencySymbolPlacement === AutoNumeric.options.currencySymbolPlacement.suffix\r\n ) {\r\n // If we could not find a place for cursor and have a sign as a suffix\r\n // Place caret before suffix currency sign\r\n position -= this.settings.currencySymbol.length;\r\n }\r\n\r\n if (this.settings.suffixText) {\r\n // If we could not find a place for cursor and have a suffix\r\n // Place caret before suffix\r\n position -= this.settings.suffixText.length;\r\n }\r\n }\r\n }\r\n\r\n // Only update the value if it has changed. This prevents modifying the selection, if any.\r\n if (value !== elementValue) {\r\n this._setElementValue(value, false);\r\n this._setCaretPosition(position);\r\n }\r\n\r\n this.formatted = true; //TODO Rename `this.formatted` to `this._formatExecuted`, since it's possible this function does not need to format anything (in the case where the keycode is dropped for instance)\r\n }\r\n\r\n /**\r\n * Serialize the form child <input> element values to a string, or an Array.\r\n * The output format is defined with the `formatType` argument.\r\n * This is loosely based upon http://stackoverflow.com/a/40705993/2834898.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {boolean} intoAnArray If `true`, instead of generating a string, it generates an Array.\r\n * @param {string} formatType If `'unformatted'`, then the AutoNumeric elements values are unformatted, if `'localized'`, then the AutoNumeric elements values are localized, and if `'formatted'`, then the AutoNumeric elements values are kept formatted. In either way, this function does not modify the value of each DOM element, but only affect the value that is returned by that serialize function.\r\n * @param {string} serializedSpaceCharacter Can either be the '+' character, or the '%20' string.\r\n * @param {string|null} forcedOutputFormat If set, then this is the format that is used for the localization, instead of the default `outputFormat` option.\r\n * @returns {string|Array}\r\n * @private\r\n */\r\n static _serialize(\r\n form,\r\n intoAnArray = false,\r\n formatType = \"unformatted\",\r\n serializedSpaceCharacter = \"+\",\r\n forcedOutputFormat = null\r\n ) {\r\n const result = [];\r\n\r\n if (typeof form === \"object\" && form.nodeName.toLowerCase() === \"form\") {\r\n Array.prototype.slice.call(form.elements).forEach((element) => {\r\n if (element.name && !element.disabled && [\"file\", \"reset\", \"submit\", \"button\"].indexOf(element.type) === -1) {\r\n if (element.type === \"select-multiple\") {\r\n Array.prototype.slice.call(element.options).forEach((option) => {\r\n if (option.selected) {\r\n //TODO Should we unformat/format/localize the selection option (which be default should be read-only)?\r\n if (intoAnArray) {\r\n result.push({ name: element.name, value: option.value });\r\n } else {\r\n // into a string\r\n result.push(`${encodeURIComponent(element.name)}=${encodeURIComponent(option.value)}`);\r\n }\r\n }\r\n });\r\n } else if ([\"checkbox\", \"radio\"].indexOf(element.type) === -1 || element.checked) {\r\n let valueResult;\r\n if (this.isManagedByAutoNumeric(element)) {\r\n let anObject;\r\n switch (formatType) {\r\n case \"unformatted\":\r\n anObject = this.getAutoNumericElement(element);\r\n if (!AutoNumericHelper.isNull(anObject)) {\r\n valueResult = this.unformat(element, anObject.getSettings());\r\n }\r\n\r\n break;\r\n case \"localized\":\r\n anObject = this.getAutoNumericElement(element);\r\n if (!AutoNumericHelper.isNull(anObject)) {\r\n // Here I need to clone the setting object, otherwise I would modify it when changing the `outputFormat` option value\r\n const currentSettings = AutoNumericHelper.cloneObject(anObject.getSettings());\r\n if (!AutoNumericHelper.isNull(forcedOutputFormat)) {\r\n currentSettings.outputFormat = forcedOutputFormat;\r\n }\r\n\r\n valueResult = this.localize(element, currentSettings);\r\n }\r\n\r\n break;\r\n case \"formatted\":\r\n default:\r\n valueResult = element.value;\r\n }\r\n } else {\r\n valueResult = element.value;\r\n }\r\n\r\n if (AutoNumericHelper.isUndefined(valueResult)) {\r\n AutoNumericHelper.throwError(\r\n \"This error should never be hit. If it has, something really wrong happened!\"\r\n );\r\n }\r\n\r\n if (intoAnArray) {\r\n result.push({ name: element.name, value: valueResult });\r\n } else {\r\n // into a string\r\n result.push(`${encodeURIComponent(element.name)}=${encodeURIComponent(valueResult)}`);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n let finalResult;\r\n\r\n if (intoAnArray) {\r\n // Result as an Array\r\n // Note: `serializedSpaceCharacter` does not affect the array result since we do not change the space character for this one\r\n finalResult = result;\r\n } else {\r\n // Result as a string\r\n finalResult = result.join(\"&\");\r\n\r\n if (\"+\" === serializedSpaceCharacter) {\r\n finalResult = finalResult.replace(/%20/g, \"+\");\r\n }\r\n }\r\n\r\n return finalResult;\r\n }\r\n\r\n /**\r\n * Serialize the form values to a string, outputting numeric strings for each AutoNumeric-managed element values.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @returns {string}\r\n */\r\n static _serializeNumericString(form, serializedSpaceCharacter = \"+\") {\r\n return this._serialize(form, false, \"unformatted\", serializedSpaceCharacter);\r\n }\r\n\r\n /**\r\n * Serialize the form values to a string, outputting the formatted value as strings for each AutoNumeric-managed elements.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @returns {string}\r\n */\r\n static _serializeFormatted(form, serializedSpaceCharacter = \"+\") {\r\n return this._serialize(form, false, \"formatted\", serializedSpaceCharacter);\r\n }\r\n\r\n /**\r\n * Serialize the form values to a string, outputting localized strings for each AutoNumeric-managed element values.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @param {string|null} forcedOutputFormat If set, then this is the format that is used for the localization, instead of the default `outputFormat` option.\r\n * @returns {string}\r\n */\r\n static _serializeLocalized(form, serializedSpaceCharacter = \"+\", forcedOutputFormat = null) {\r\n return this._serialize(form, false, \"localized\", serializedSpaceCharacter, forcedOutputFormat);\r\n }\r\n\r\n /**\r\n * Generate an Array with the form values, outputting numeric strings for each AutoNumeric-managed element values.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @returns {Array}\r\n */\r\n static _serializeNumericStringArray(form, serializedSpaceCharacter = \"+\") {\r\n return this._serialize(form, true, \"unformatted\", serializedSpaceCharacter);\r\n }\r\n\r\n /**\r\n * Generate an Array with the form values, outputting the formatted value as strings for each AutoNumeric-managed elements.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @returns {Array}\r\n */\r\n static _serializeFormattedArray(form, serializedSpaceCharacter = \"+\") {\r\n return this._serialize(form, true, \"formatted\", serializedSpaceCharacter);\r\n }\r\n\r\n /**\r\n * Generate an Array with the form values, outputting localized strings for each AutoNumeric-managed element values.\r\n *\r\n * @param {HTMLFormElement} form\r\n * @param {string} serializedSpaceCharacter\r\n * @param {string|null} forcedOutputFormat If set, then this is the format that is used for the localization, instead of the default `outputFormat` option.\r\n * @returns {Array}\r\n */\r\n static _serializeLocalizedArray(form, serializedSpaceCharacter = \"+\", forcedOutputFormat = null) {\r\n return this._serialize(form, true, \"localized\", serializedSpaceCharacter, forcedOutputFormat);\r\n }\r\n}\r\n\r\n/**\r\n * Initialize multiple DOM elements in one call (and possibly pass multiple values that will be mapped to each DOM element).\r\n *\r\n * @example\r\n * // Init multiple DOM elements in one call (and possibly pass multiple values that will be mapped to each DOM element)\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple([domElement1, domElement2, domElement3], { options });\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple([domElement1, domElement2, domElement3], [{ options }, 'euroPos']);\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple([domElement1, domElement2, domElement3], 12345.789, { options });\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple([domElement1, domElement2, domElement3], 12345.789, [{ options }, 'euroPos']);\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple.french([domElement1, domElement2, domElement3], [12345.789, 234.78, null], { options });\r\n * [anElement1, anElement2, anElement3] = AutoNumeric.multiple.french([domElement1, domElement2, domElement3], [12345.789, 234.78, null], [{ options }, 'euroPos']);\r\n *\r\n * // Special case, if a <form> element is passed (or any other 'parent' (or 'root') DOM element), then autoNumeric will initialize each child `<input>` elements recursively, ignoring those referenced in the `exclude` attribute\r\n * [anElement1, anElement2] = AutoNumeric.multiple({ rootElement: formElement }, { options });\r\n * [anElement1, anElement2] = AutoNumeric.multiple({ rootElement: formElement, exclude : [hiddenElement, tokenElement] }, { options });\r\n * [anElement1, anElement2] = AutoNumeric.multiple({ rootElement: formElement, exclude : [hiddenElement, tokenElement] }, [12345.789, null], { options });\r\n *\r\n * // If you want to select multiple elements via a css selector, then you must use the `multiple` function. Under the hood `QuerySelectorAll` is used.\r\n * [anElement1, anElement2] = AutoNumeric.multiple('.myCssClass > input', { options }); // This always return an Array, even if there is only one element selected\r\n * [anElement1, anElement2] = AutoNumeric.multiple('.myCssClass > input', [null, 12345.789], { options }); // Idem above, but with passing the initial values too\r\n *\r\n * @param {string|Array|{ rootElement: HTMLElement }|{ rootElement: HTMLElement, exclude: Array<HTMLInputElement>}} arg1\r\n * @param {number|Array|object|null} initialValue\r\n * @param {object|Array|null} options\r\n * @returns {Array}\r\n */\r\nAutoNumeric.multiple = (arg1, initialValue = null, options = null) => {\r\n const result = [];\r\n\r\n // Analyze the arguments and transform them to make them exploitable\r\n if (AutoNumericHelper.isObject(initialValue)) {\r\n // If the user gave an option object as the second argument, instead of the initial values\r\n options = initialValue;\r\n initialValue = null;\r\n }\r\n\r\n if (AutoNumericHelper.isString(arg1)) {\r\n arg1 = [...document.querySelectorAll(arg1)]; // Convert a NodeList to an Array (cf. http://stackoverflow.com/a/37297292/2834898)\r\n } else if (AutoNumericHelper.isObject(arg1)) {\r\n if (!Object.prototype.hasOwnProperty.call(arg1, \"rootElement\")) {\r\n AutoNumericHelper.throwError(\r\n `The object passed to the 'multiple' function is invalid ; no 'rootElement' attribute found.`\r\n );\r\n }\r\n\r\n // Retrieve the DOM element list from the given <form> element\r\n const elements = [...arg1.rootElement.querySelectorAll(\"input\")];\r\n if (Object.prototype.hasOwnProperty.call(arg1, \"exclude\")) {\r\n if (!Array.isArray(arg1.exclude)) {\r\n AutoNumericHelper.throwError(`The 'exclude' array passed to the 'multiple' function is invalid.`);\r\n }\r\n\r\n // Filter out the excluded elements\r\n arg1 = AutoNumericHelper.filterOut(elements, arg1.exclude);\r\n } else {\r\n arg1 = elements;\r\n }\r\n } else if (!AutoNumericHelper.isArray(arg1)) {\r\n AutoNumericHelper.throwError(`The given parameters to the 'multiple' function are invalid.`);\r\n }\r\n\r\n if (arg1.length === 0) {\r\n let showWarnings = true;\r\n if (!AutoNumericHelper.isNull(options) && AutoNumericHelper.isBoolean(options.showWarnings)) {\r\n showWarnings = options.showWarnings;\r\n }\r\n\r\n AutoNumericHelper.warning(\r\n `No valid DOM elements were given hence no AutoNumeric objects were instantiated.`,\r\n showWarnings\r\n );\r\n\r\n return [];\r\n }\r\n\r\n // At this point, we know `arg1` is an array of DOM elements\r\n\r\n // This function can be initialized with two types of array, one for the initial values, and/or one for the options.\r\n // So we need to find out if an array is detected if the user passed an array of initial values, or an array of options\r\n // Therefore, we analyze the content of the arrays for the second and third arguments\r\n // ...for the second parameter :\r\n const isInitialValueArray = AutoNumericHelper.isArray(initialValue);\r\n const isInitialValueArrayAndNotEmpty = isInitialValueArray && initialValue.length >= 1;\r\n let secondArgumentIsInitialValueArray = false;\r\n let secondArgumentIsOptionArray = false;\r\n // Any of the arrays can be either an array of initial values, or an array of option object/pre-defined option names\r\n if (isInitialValueArrayAndNotEmpty) {\r\n const typeOfFirstArrayElement = typeof Number(initialValue[0]);\r\n // First we test the second argument\r\n secondArgumentIsInitialValueArray = typeOfFirstArrayElement === \"number\" && !isNaN(Number(initialValue[0]));\r\n\r\n if (!secondArgumentIsInitialValueArray) {\r\n // If the second argument is an array, but not an array of values, check if it's instead an array of options/pre-defined option names\r\n if (\r\n typeOfFirstArrayElement === \"string\" ||\r\n isNaN(typeOfFirstArrayElement) ||\r\n typeOfFirstArrayElement === \"object\"\r\n ) {\r\n secondArgumentIsOptionArray = true;\r\n }\r\n }\r\n }\r\n\r\n // ...for the third parameter :\r\n const isOptionsArrayAndNotEmpty = AutoNumericHelper.isArray(options) && options.length >= 1;\r\n let thirdArgumentIsOptionArray = false;\r\n if (isOptionsArrayAndNotEmpty) {\r\n const typeOfFirstArrayElement = typeof options[0];\r\n if (typeOfFirstArrayElement === \"string\" || typeOfFirstArrayElement === \"object\") {\r\n // If the third argument is an array of options/pre-defined option names\r\n thirdArgumentIsOptionArray = true;\r\n }\r\n }\r\n\r\n // Depending of our findings, we generate the options variable to use `optionsToUse`, either directly, or merged\r\n let optionsToUse;\r\n if (secondArgumentIsOptionArray) {\r\n optionsToUse = AutoNumeric.mergeOptions(initialValue);\r\n } else if (thirdArgumentIsOptionArray) {\r\n optionsToUse = AutoNumeric.mergeOptions(options);\r\n } else {\r\n optionsToUse = options;\r\n }\r\n\r\n // Initialize the initial values\r\n const isInitialValueNumber = AutoNumericHelper.isNumber(initialValue);\r\n let initialValueArraySize;\r\n if (secondArgumentIsInitialValueArray) {\r\n initialValueArraySize = initialValue.length;\r\n }\r\n\r\n // Instantiate each AutoNumeric objects\r\n arg1.forEach((domElement, index) => {\r\n if (isInitialValueNumber) {\r\n // We set the same value for each elements\r\n result.push(new AutoNumeric(domElement, initialValue, optionsToUse));\r\n } else if (secondArgumentIsInitialValueArray && index <= initialValueArraySize) {\r\n result.push(new AutoNumeric(domElement, initialValue[index], optionsToUse));\r\n } else {\r\n result.push(new AutoNumeric(domElement, null, optionsToUse));\r\n }\r\n });\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Polyfill for obsolete browsers like IE\r\n */\r\n(function () {\r\n // Polyfill for `Array.from()` (Fix issue #495)\r\n if (!Array.from) {\r\n Array.from = (object) => [].slice.call(object);\r\n }\r\n\r\n // Polyfill for `CustomEvent` (cf. https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent)\r\n if (typeof window === \"undefined\" || typeof window.CustomEvent === \"function\") {\r\n return false;\r\n }\r\n\r\n function CustomEvent(event, params) {\r\n params = params || { bubbles: false, cancelable: false, detail: void 0 };\r\n const evt = document.createEvent(\"CustomEvent\");\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n\r\n CustomEvent.prototype = window.Event.prototype;\r\n window.CustomEvent = CustomEvent;\r\n})();\r\n","/**\r\n * Options for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumeric from \"./AutoNumeric\";\r\n\r\n/**\r\n * Event list managed by AutoNumeric\r\n *\r\n * @type {{correctedValue: string, initialized: string, invalidFormula: string, invalidValue: string, formatted: string, rawValueModified: string, minRangeExceeded: string, maxRangeExceeded: string, native: {input: string, change: string}, validFormula: string}}\r\n */\r\nAutoNumeric.events = {\r\n correctedValue: \"autoNumeric:correctedValue\",\r\n initialized: \"autoNumeric:initialized\",\r\n invalidFormula: \"autoNumeric:invalidFormula\",\r\n invalidValue: \"autoNumeric:invalidValue\",\r\n formatted: \"autoNumeric:formatted\",\r\n rawValueModified: \"autoNumeric:rawValueModified\",\r\n minRangeExceeded: \"autoNumeric:minExceeded\",\r\n maxRangeExceeded: \"autoNumeric:maxExceeded\",\r\n native: {\r\n input: \"input\",\r\n change: \"change\"\r\n },\r\n validFormula: \"autoNumeric:validFormula\"\r\n};\r\n\r\nObject.freeze(AutoNumeric.events.native);\r\nObject.freeze(AutoNumeric.events);\r\nObject.defineProperty(AutoNumeric, \"events\", { configurable: false, writable: false });\r\n\r\nexport default AutoNumeric.events;\r\n","/**\r\n * Options for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumeric from \"./AutoNumeric\";\r\nimport AutoNumericHelper from \"./AutoNumericHelper\";\r\n\r\n/**\r\n * Options values enumeration\r\n */\r\nAutoNumeric.options = {\r\n /* Defines if the decimal places should be padded with zeroes\r\n * `true` : always pad decimals with zeros (ie. '12.3400')\r\n * `false` : never pad with zeros (ie. '12.34')\r\n * `'floats'` : pad with zeroes only when there are decimals (ie. '12' and '12.3400')\r\n * Note: setting allowDecimalPadding to 'false' will override the 'decimalPlaces' setting.\r\n */\r\n allowDecimalPadding: {\r\n always: true,\r\n never: false,\r\n floats: \"floats\"\r\n },\r\n\r\n /* Defines if the decimal character or decimal character alternative should be accepted when there is already a decimal character shown in the element.\r\n * If set to `true`, any decimal character input will be accepted and will subsequently modify the decimal character position, as well as the `rawValue`.\r\n * If set to `false`, the decimal character and its alternative key will be dropped as before. This is the default setting.\r\n */\r\n alwaysAllowDecimalCharacter: {\r\n alwaysAllow: true,\r\n doNotAllow: false\r\n },\r\n\r\n /* Defines where should be positioned the caret on focus\r\n * null : Do not enforce any caret positioning on focus (this is needed when using `selectOnFocus`)\r\n * `'start'` : put the caret of the far left side of the value (excluding the positive/negative sign and currency symbol, if any)\r\n * `'end'` : put the caret of the far right side of the value (excluding the positive/negative sign and currency symbol, if any)\r\n * `'decimalLeft'` : put the caret of the left of the decimal character if any\r\n * `'decimalRight'` : put the caret of the right of the decimal character if any\r\n */\r\n caretPositionOnFocus: {\r\n start: \"start\",\r\n end: \"end\",\r\n decimalLeft: \"decimalLeft\",\r\n decimalRight: \"decimalRight\",\r\n doNoForceCaretPosition: null\r\n },\r\n\r\n /* Defines if a local list of AutoNumeric objects should be kept when initializing this object.\r\n * This list is used by the `global.*` functions.\r\n */\r\n createLocalList: {\r\n createList: true,\r\n doNotCreateList: false\r\n },\r\n\r\n /* Defines the currency symbol string.\r\n * It can be a string of more than one character (allowing for instance to use a space on either side of it, example: '$ ' or ' $')\r\n * cf. https://en.wikipedia.org/wiki/Currency_symbol\r\n */\r\n currencySymbol: {\r\n none: \"\",\r\n currencySign: \"¤\",\r\n austral: \"₳\", // ARA\r\n australCentavo: \"¢\",\r\n baht: \"฿\", // THB\r\n cedi: \"₵\", // GHS\r\n cent: \"¢\",\r\n colon: \"â‚¡\", // CRC\r\n cruzeiro: \"â‚¢\", // BRB - Not used anymore since 1993\r\n dollar: \"$\",\r\n dong: \"â‚«\", // VND\r\n drachma: \"₯\", // GRD (or 'ΔÏχ.' or 'ΔÏ.')\r\n dram: \"​Ö\", // AMD\r\n european: \"â‚ \", // XEU (old currency before the Euro)\r\n euro: \"€\", // EUR\r\n florin: \"Æ’\",\r\n franc: \"â‚£\", // FRF\r\n guarani: \"₲\", // PYG\r\n hryvnia: \"â‚´\", // грн\r\n kip: \"â‚\", // LAK\r\n att: \"àºàº±àº”\", // cents of the Kip\r\n lepton: \"Λ.\", // cents of the Drachma\r\n lira: \"₺\", // TRY\r\n liraOld: \"₤\",\r\n lari: \"₾\", // GEL\r\n mark: \"ℳ\",\r\n mill: \"â‚¥\",\r\n naira: \"₦\", // NGN\r\n peseta: \"₧\",\r\n peso: \"₱\", // PHP\r\n pfennig: \"â‚°\", // cents of the Mark\r\n pound: \"£\",\r\n real: \"R$\", // Brazilian real\r\n riel: \"៛\", // KHR\r\n ruble: \"₽\", // RUB\r\n rupee: \"₹\", // INR\r\n rupeeOld: \"₨\",\r\n shekel: \"₪\",\r\n shekelAlt: \"ש״ח‎‎\",\r\n taka: \"৳\", // BDT\r\n tenge: \"₸\", // KZT\r\n togrog: \"â‚®\", // MNT\r\n won: \"â‚©\",\r\n yen: \"Â¥\"\r\n },\r\n\r\n /* Defines where the currency symbol should be placed (before of after the numbers)\r\n * for prefix currencySymbolPlacement: \"p\" (default)\r\n * for suffix currencySymbolPlacement: \"s\"\r\n */\r\n currencySymbolPlacement: {\r\n prefix: \"p\",\r\n suffix: \"s\"\r\n },\r\n\r\n /* Defines what decimal separator character is used\r\n */\r\n decimalCharacter: {\r\n comma: \",\",\r\n dot: \".\",\r\n middleDot: \"·\",\r\n arabicDecimalSeparator: \"Ù«\",\r\n decimalSeparatorKeySymbol: \"⎖\"\r\n },\r\n\r\n /* Allow to declare an alternative decimal separator which is automatically replaced by `decimalCharacter` when typed.\r\n * This is used by countries that use a comma ',' as the decimal character and have keyboards with a numeric pads that have\r\n * a period 'full stop' as the decimal character (France or Spain for instance).\r\n */\r\n decimalCharacterAlternative: {\r\n none: null,\r\n comma: \",\",\r\n dot: \".\"\r\n },\r\n\r\n /* Defines the default number of decimal places to show on the formatted value, and keep for the precision.\r\n * Incidentally, since we need to be able to show that many decimal places, this also defines the raw value precision by default.\r\n */\r\n decimalPlaces: {\r\n none: 0,\r\n one: 1,\r\n two: 2,\r\n three: 3,\r\n four: 4,\r\n five: 5,\r\n six: 6\r\n },\r\n\r\n /* Defines how many decimal places should be kept for the raw value (ie. This is the precision for float values).\r\n *\r\n * If this option is set to `null` (which is the default), then the value of `decimalPlaces` is used for `decimalPlacesRawValue` as well.\r\n * Note: Setting this to a lower number of decimal places than the one to be shown will lead to confusion for the users.\r\n */\r\n decimalPlacesRawValue: {\r\n useDefault: null,\r\n none: 0,\r\n one: 1,\r\n two: 2,\r\n three: 3,\r\n four: 4,\r\n five: 5,\r\n six: 6\r\n },\r\n\r\n /* Defines how many decimal places should be visible when the element is unfocused.\r\n * If this is set to `null`, then this option is ignored, and the `decimalPlaces` option value will be used instead.\r\n * This means this is optional ; if omitted the decimal places will be the same when the input has the focus.\r\n *\r\n * This option can be used in conjonction with the two other `scale*` options, which allows to display a different formatted value when the element is unfocused, while another formatted value is shown when focused.\r\n * For those `scale*` options to have any effect, `divisorWhenUnfocused` must not be `null`.\r\n */\r\n decimalPlacesShownOnBlur: {\r\n useDefault: null,\r\n none: 0,\r\n one: 1,\r\n two: 2,\r\n three: 3,\r\n four: 4,\r\n five: 5,\r\n six: 6\r\n },\r\n\r\n /* Defines how many decimal places should be visible when the element has the focus.\r\n * If this is set to `null`, then this option is ignored, and the `decimalPlaces` option value will be used instead.\r\n *\r\n * Example:\r\n * For instance if `decimalPlacesShownOnFocus` is set to `5` and the default number of decimal places is `2`, then on focus `1,000.12345` will be shown, while without focus `1,000.12` will be set back.\r\n * Note 1: the results depends on the rounding method used.\r\n * Note 2: the `getNumericString()` method returns the extended decimal places\r\n */\r\n decimalPlacesShownOnFocus: {\r\n useDefault: null,\r\n none: 0,\r\n one: 1,\r\n two: 2,\r\n three: 3,\r\n four: 4,\r\n five: 5,\r\n six: 6\r\n },\r\n\r\n /* Helper option for ASP.NET postback\r\n * This should be set as the value of the unformatted default value\r\n * examples:\r\n * no default value=\"\" {defaultValueOverride: \"\"}\r\n * value=1234.56 {defaultValueOverride: '1234.56'}\r\n */\r\n defaultValueOverride: {\r\n doNotOverride: null\r\n },\r\n\r\n /* Defines how many numbers should be grouped together (usually for the thousand separator)\r\n * - \"2\", results in 99,99,99,999 India's lakhs\r\n * - \"2s\", results in 99,999,99,99,999 India's lakhs scaled\r\n * - \"3\", results in 999,999,999 (default)\r\n * - \"4\", results in 9999,9999,9999 used in some Asian countries\r\n * Note: This option does not accept other grouping choice.\r\n */\r\n digitalGroupSpacing: {\r\n two: \"2\",\r\n twoScaled: \"2s\",\r\n three: \"3\",\r\n four: \"4\"\r\n },\r\n\r\n /* Defines the thousand grouping separator character\r\n * Example : If `'.'` is set, then you'll get `'1.234.567'`\r\n */\r\n digitGroupSeparator: {\r\n comma: \",\",\r\n dot: \".\",\r\n normalSpace: \" \",\r\n thinSpace: \"\\u2009\",\r\n narrowNoBreakSpace: \"\\u202f\",\r\n noBreakSpace: \"\\u00a0\",\r\n noSeparator: \"\",\r\n apostrophe: `'`,\r\n arabicThousandsSeparator: \"Ù¬\",\r\n dotAbove: \"Ë™\",\r\n privateUseTwo: \"’\" // \\u0092\r\n },\r\n\r\n /* The `divisorWhenUnfocused` divide the element value on focus.\r\n * On blur, the element value is multiplied back.\r\n *\r\n * Example : Display percentages using { divisorWhenUnfocused: 100 } (or directly in the Html with `<input data-divisor-when-unfocused=\"100\">`)\r\n * The divisor value does not need to be an integer, but please understand that Javascript has limited accuracy in math ; use with caution.\r\n * Note: The `getNumericString` method returns the full value, including the 'hidden' decimals.\r\n */\r\n divisorWhenUnfocused: {\r\n none: null,\r\n percentage: 100,\r\n permille: 1000,\r\n basisPoint: 10000\r\n },\r\n\r\n /* Defines what should be displayed in the element if the raw value is an empty string ('').\r\n * - 'focus' : The currency sign is displayed when the input receives focus (default)\r\n * - 'press' : The currency sign is displayed whenever a key is being pressed\r\n * - 'always' : The currency sign is always displayed\r\n * - 'zero' : A zero is displayed ('rounded' with or without a currency sign) if the input has no value on focus out\r\n * - 'min' : The minimum value is displayed if the input has no value on focus out\r\n * - 'max' : The maximum value is displayed if the input has no value on focus out\r\n * - 'null' : When the element is empty, the `rawValue` and the element value/text is set to `null`. This also allows to set the value to `null` using `anElement.set(null)`.\r\n */\r\n emptyInputBehavior: {\r\n focus: \"focus\",\r\n press: \"press\",\r\n always: \"always\",\r\n zero: \"zero\",\r\n min: \"min\",\r\n max: \"max\",\r\n null: \"null\"\r\n },\r\n\r\n /* Defines if the custom and native events triggered by AutoNumeric should bubble up or not.\r\n */\r\n eventBubbles: {\r\n bubbles: true,\r\n doesNotBubble: false\r\n },\r\n\r\n /* Defines if the custom and native events triggered by AutoNumeric should be cancelable.\r\n */\r\n eventIsCancelable: {\r\n isCancelable: true,\r\n isNotCancelable: false\r\n },\r\n\r\n /* This option is the 'strict mode' (aka 'debug' mode), which allows autoNumeric to strictly analyse the options passed, and fails if an unknown options is used in the settings object.\r\n * You should set that to `true` if you want to make sure you are only using 'pure' autoNumeric settings objects in your code.\r\n * If you see uncaught errors in the console and your code starts to fail, this means somehow those options gets polluted by another program (which usually happens when using frameworks).\r\n */\r\n failOnUnknownOption: {\r\n fail: true,\r\n ignore: false\r\n },\r\n\r\n /* Determine if the default value will be formatted on initialization.\r\n */\r\n formatOnPageLoad: {\r\n format: true, // automatically formats the default value on initialization\r\n doNotFormat: false // will not format the default value on initialization\r\n },\r\n\r\n /* Defines if the 'formula mode' can be activated by the user.\r\n * If set to `true`, then the user can enter the formula mode by entering the '=' character.\r\n * He will then be allowed to enter any simple math formula using numeric characters as well as the following operators +, -, *, /, ( and ).\r\n * The formula mode is closed when the user either validate their math expression using the `Enter` key, or when the element is blurred.\r\n * If the formula is invalid, the previous valid `rawValue` is set back, and the `autoNumeric:invalidFormula` event is sent.\r\n * When a valid formula is accepted, then its result is `set()`, and the `autoNumeric:validFormula` event is sent.\r\n *\r\n * By default, this mode is disabled.\r\n */\r\n formulaMode: {\r\n enabled: true,\r\n disabled: false\r\n },\r\n\r\n /* Set the undo/redo history table size.\r\n * Each record keeps the raw value as well and the last known caret/selection positions.\r\n */\r\n historySize: {\r\n verySmall: 5,\r\n small: 10,\r\n medium: 20,\r\n large: 50,\r\n veryLarge: 100,\r\n insane: Number.MAX_SAFE_INTEGER\r\n },\r\n\r\n /* Defines the name of the CSS class to use on contenteditable-enabled elements when the value is invalid\r\n * This is not used when the HTML element used is an input.\r\n */\r\n invalidClass: \"an-invalid\",\r\n\r\n /* Allow the user to 'cancel' and undo the changes he made to the given autonumeric-managed element, by pressing the 'Escape' key.\r\n * Whenever the user 'validate' the input (either by hitting 'Enter', or blurring the element), the new value is saved for subsequent 'cancellation'.\r\n *\r\n * The process :\r\n * - save the input value on focus\r\n * - if the user change the input value, and hit `Escape`, then the initial value saved on focus is set back\r\n * - on the other hand if the user either have used `Enter` to validate (`Enter` throws a change event) his entries, or if the input value has been changed by another script in the mean time, then we save the new input value\r\n * - on a successful 'cancel', select the whole value (while respecting the `selectNumberOnly` option)\r\n * - bonus; if the value has not changed, hitting 'Esc' just select all the input value (while respecting the `selectNumberOnly` option)\r\n */\r\n isCancellable: {\r\n cancellable: true,\r\n notCancellable: false\r\n },\r\n\r\n /* Controls the leading zero behavior\r\n * - 'allow' : allows leading zeros to be entered. Zeros will be truncated when entering additional digits. On focusout zeros will be deleted\r\n * - 'deny' : allows only one leading zero on values that are between 1 and -1\r\n * - 'keep' : allows leading zeros to be entered. on focusout zeros will be retained\r\n */\r\n leadingZero: {\r\n allow: \"allow\",\r\n deny: \"deny\",\r\n keep: \"keep\"\r\n },\r\n\r\n /* Defines the maximum possible value a user can enter.\r\n * Notes:\r\n * - this value must be a string and use the period for the decimal point\r\n * - this value needs to be larger than `minimumValue`\r\n */\r\n maximumValue: {\r\n tenTrillions: \"10000000000000\", // 10000 billions\r\n oneBillion: \"1000000000\",\r\n zero: \"0\"\r\n },\r\n\r\n /* Defines the minimum possible value a user can enter.\r\n * Notes:\r\n * - this value must be a string and use the period for the decimal point\r\n * - this value needs to be smaller than `maximumValue`\r\n * - if this is superior to 0, then you'll effectively prevent your user to entirely delete the content of your element\r\n */\r\n minimumValue: {\r\n tenTrillions: \"-10000000000000\", // 10000 billions\r\n oneBillion: \"-1000000000\",\r\n zero: \"0\"\r\n },\r\n\r\n /* Allows the user to increment or decrement the element value with the mouse wheel.\r\n * The wheel behavior can be modified by the `wheelStep` option.\r\n * This `wheelStep` option can be used in two ways, either by setting:\r\n * - a 'fixed' step value (`wheelStep : 1000`), or\r\n * - the 'progressive' string (`wheelStep : 'progressive'`), which will then activate a special mode where the step is automatically calculated based on the element value size.\r\n *\r\n * Note :\r\n * You can activate/deactivate the wheel event for each `wheelOn` option value by using the 'Shift' modifier key while using the mouse wheel.\r\n */\r\n modifyValueOnWheel: {\r\n modifyValue: true,\r\n doNothing: false\r\n },\r\n\r\n /* Adds brackets on negative values (ie. transforms '-$ 999.99' to '($999.99)')\r\n * Those brackets are visible only when the field does NOT have the focus.\r\n * The left and right symbols should be enclosed in quotes and separated by a comma.\r\n */\r\n negativeBracketsTypeOnBlur: {\r\n parentheses: \"(,)\",\r\n brackets: \"[,]\",\r\n chevrons: \"<,>\",\r\n curlyBraces: \"{,}\",\r\n angleBrackets: \"〈,〉\",\r\n japaneseQuotationMarks: \"ï½¢,ï½£\",\r\n halfBrackets: \"⸤,⸥\",\r\n whiteSquareBrackets: \"⟦,⟧\",\r\n quotationMarks: \"‹,›\",\r\n guillemets: \"«,»\",\r\n none: null // This is the default value, which deactivate this feature\r\n },\r\n\r\n /* Placement of the negative/positive sign relative to the `currencySymbol` option.\r\n *\r\n * Example:\r\n * // Default values\r\n * -1,234.56 => default no options required\r\n * $-1,234.56 => {currencySymbol: \"$\", negativePositiveSignPlacement: \"r\"} // Default if negativePositiveSignPlacement is 'null' and currencySymbol is not empty\r\n *\r\n * // Sign on the left hand side of the whole number\r\n * -$1,234.56 => {currencySymbol: \"$\"} or {currencySymbol: \"$\", negativePositiveSignPlacement: \"l\"}\r\n * -1,234.56$ => {currencySymbol: \"$\", currencySymbolPlacement: \"s\", negativePositiveSignPlacement: \"p\"} // Default if negativePositiveSignPlacement is 'null' and currencySymbol is not empty\r\n *\r\n * // Sign on the right hand side of the whole number\r\n * 1,234.56- => {negativePositiveSignPlacement: \"s\"}\r\n * $1,234.56- => {currencySymbol: \"$\", negativePositiveSignPlacement: \"s\"}\r\n * 1,234.56-$ => {currencySymbol: \"$\", currencySymbolPlacement: \"s\"}\r\n * 1,234.56$- => {currencySymbol: \"$\", currencySymbolPlacement: \"s\", negativePositiveSignPlacement: \"r\"}\r\n */\r\n negativePositiveSignPlacement: {\r\n prefix: \"p\",\r\n suffix: \"s\",\r\n left: \"l\",\r\n right: \"r\",\r\n none: null\r\n },\r\n\r\n /* Defines the negative sign symbol.\r\n * It can be a string of only one character.\r\n */\r\n negativeSignCharacter: {\r\n hyphen: \"-\",\r\n minus: \"−\",\r\n heavyMinus: \"âž–\",\r\n fullWidthHyphen: \"ï¼\",\r\n circledMinus: \"⊖\",\r\n squaredMinus: \"⊟\",\r\n triangleMinus: \"⨺\",\r\n plusMinus: \"±\",\r\n minusPlus: \"∓\",\r\n dotMinus: \"∸\",\r\n minusTilde: \"≂\",\r\n not: \"¬\"\r\n },\r\n\r\n /* Defines if the element should have event listeners activated on it.\r\n * By default, those event listeners are only added to <input> elements and html element with the `contenteditable` attribute set to `true`, but not on the other html tags.\r\n * This allows to initialize elements without any event listeners.\r\n * Warning: Since AutoNumeric will not check the input content after its initialization, using some autoNumeric methods afterwards *will* probably leads to formatting problems.\r\n */\r\n noEventListeners: {\r\n noEvents: true,\r\n addEvents: false\r\n },\r\n\r\n /* Manage how autoNumeric react when the user tries to paste an invalid number.\r\n * - 'error' : (This is the default behavior) The input value is not changed and an error is output in the console.\r\n * - 'ignore' : idem than 'error', but fail silently without outputting any error/warning in the console.\r\n * - 'clamp' : if the pasted value is either too small or too big regarding the minimumValue and maximumValue range, then the result is clamped to those limits.\r\n * - 'truncate' : autoNumeric will insert as many pasted numbers it can at the initial caret/selection, until everything is pasted, or the range limit is hit.\r\n * The non-pasted numbers are dropped and therefore not used at all.\r\n * - 'replace' : autoNumeric will first insert as many pasted numbers it can at the initial caret/selection, then if the range limit is hit, it will try\r\n * to replace one by one the remaining initial numbers (on the right side of the caret) with the rest of the pasted numbers.\r\n *\r\n * Note 1 : A paste content starting with a negative sign '-' will be accepted anywhere in the input, and will set the resulting value as a negative number\r\n * Note 2 : A paste content starting with a number will be accepted, even if the rest is gibberish (ie. '123foobar456').\r\n * Only the first number will be used (here '123').\r\n * Note 3 : The paste event works with the `decimalPlacesShownOnFocus` option too.\r\n */\r\n onInvalidPaste: {\r\n error: \"error\",\r\n ignore: \"ignore\",\r\n clamp: \"clamp\",\r\n truncate: \"truncate\",\r\n replace: \"replace\"\r\n },\r\n\r\n /* Defines how the value should be formatted when wanting a 'localized' version of it.\r\n * - null or 'string' => 'nnnn.nn' or '-nnnn.nn' as text type. This is the default behavior.\r\n * - 'number' => nnnn.nn or -nnnn.nn as a Number (Warning: this works only for integers inferior to Number.MAX_SAFE_INTEGER)\r\n * - ',' or '-,' => 'nnnn,nn' or '-nnnn,nn'\r\n * - '.-' => 'nnnn.nn' or 'nnnn.nn-'\r\n * - ',-' => 'nnnn,nn' or 'nnnn,nn-'\r\n *\r\n * Note: The hyphen '-' is translated to the custom negative sign defined in `negativeSignCharacter`\r\n */\r\n outputFormat: {\r\n string: \"string\",\r\n number: \"number\",\r\n dot: \".\",\r\n negativeDot: \"-.\",\r\n comma: \",\",\r\n negativeComma: \"-,\",\r\n dotNegative: \".-\",\r\n commaNegative: \",-\",\r\n none: null\r\n },\r\n\r\n /* Defines if AutoNumeric should let the user override the minimum and/or maximum limits when he types numbers in the element.\r\n * - 'ceiling' Strictly adheres to `maximumValue` and ignores the `minimumValue` settings\r\n * It allows the user to enter anything between -∞ `and maximumValue`\r\n * If `maximumValue` is less than 0, then it will prevent the user emptying the field or typing value above `maximumValue`, making sure the value entered is always valid\r\n * - 'floor' Strictly adheres to `minimumValue` and ignores the `maximumValue` settings\r\n * It allows the user to enter anything between `minimumValue` and +∞\r\n * If `minimumValue` is higher than 0, then it will prevent the user emptying the field or typing value below `minimumValue`, making sure the value entered is always valid\r\n * - 'ignore' Ignores both the `minimumValue` and `maximumValue` settings\r\n * When using this option, the field will always be valid range-wise\r\n * - 'invalid' The user can temporarily type out-of-bound values. In doing so, the invalid state is set on the field.\r\n * Whenever an invalid value is typed, an 'autoNumeric:invalidValue' event is sent\r\n * When the value is correctly set back within the limit boundaries, the invalid state is removed, and the 'autoNumeric:correctedValue' event is sent\r\n * - 'doNotOverride' Strictly adheres to the `maximumValue` and `minimumValue` settings\r\n * This is the default behavior\r\n * If `0` is out of the min/max range, this will prevent the user clearing the input field, making sure the value entered is always valid\r\n */\r\n overrideMinMaxLimits: {\r\n ceiling: \"ceiling\",\r\n floor: \"floor\",\r\n ignore: \"ignore\",\r\n invalid: \"invalid\",\r\n doNotOverride: null\r\n },\r\n\r\n /* Defines the positive sign symbol.\r\n * It can be a string of only one character.\r\n * This is shown only if `showPositiveSign` is set to `true`.\r\n */\r\n positiveSignCharacter: {\r\n plus: \"+\",\r\n fullWidthPlus: \"+\",\r\n heavyPlus: \"âž•\",\r\n doublePlus: \"⧺\",\r\n triplePlus: \"⧻\",\r\n circledPlus: \"⊕\",\r\n squaredPlus: \"⊞\",\r\n trianglePlus: \"⨹\",\r\n plusMinus: \"±\",\r\n minusPlus: \"∓\",\r\n dotPlus: \"∔\",\r\n altHebrewPlus: \"﬩\",\r\n normalSpace: \" \",\r\n thinSpace: \"\\u2009\",\r\n narrowNoBreakSpace: \"\\u202f\",\r\n noBreakSpace: \"\\u00a0\"\r\n },\r\n\r\n /* The `rawValueDivisor` divides the formatted value shown in the AutoNumeric element and store the result in `rawValue`.\r\n * @example { rawValueDivisor: '100' } or <input data-raw-value-divisor=\"100\">\r\n * Given the `0.01234` raw value, the formatted value will be displayed as `'1.234'`.\r\n * This is useful when displaying percentage for instance, and avoid the need to divide/multiply by 100 between the number shown and the raw value.\r\n */\r\n rawValueDivisor: {\r\n none: null,\r\n percentage: 100,\r\n permille: 1000,\r\n basisPoint: 10000\r\n },\r\n\r\n /* Defines if the element (`<input>` or another allowed html tag) should be set as read-only on initialization.\r\n * When set to `true`, then:\r\n * - the `readonly` html property is added to the <input> element on initialization, or\r\n * - the `contenteditable` attribute is set to `false` on non-input elements.\r\n */\r\n readOnly: {\r\n readOnly: true,\r\n readWrite: false\r\n },\r\n\r\n /* Defines the rounding method to use.\r\n * roundingMethod: \"S\", Round-Half-Up Symmetric (default)\r\n * roundingMethod: \"A\", Round-Half-Up Asymmetric\r\n * roundingMethod: \"s\", Round-Half-Down Symmetric (lower case s)\r\n * roundingMethod: \"a\", Round-Half-Down Asymmetric (lower case a)\r\n * roundingMethod: \"B\", Round-Half-Even \"Bankers Rounding\"\r\n * roundingMethod: \"U\", Round Up \"Round-Away-From-Zero\"\r\n * roundingMethod: \"D\", Round Down \"Round-Toward-Zero\" - same as truncate\r\n * roundingMethod: \"C\", Round to Ceiling \"Toward Positive Infinity\"\r\n * roundingMethod: \"F\", Round to Floor \"Toward Negative Infinity\"\r\n * roundingMethod: \"N05\" Rounds to the nearest .05 => same as \"CHF\" used in 1.9X and still valid\r\n * roundingMethod: \"U05\" Rounds up to next .05\r\n * roundingMethod: \"D05\" Rounds down to next .05\r\n */\r\n roundingMethod: {\r\n halfUpSymmetric: \"S\",\r\n halfUpAsymmetric: \"A\",\r\n halfDownSymmetric: \"s\",\r\n halfDownAsymmetric: \"a\",\r\n halfEvenBankersRounding: \"B\",\r\n upRoundAwayFromZero: \"U\",\r\n downRoundTowardZero: \"D\",\r\n toCeilingTowardPositiveInfinity: \"C\",\r\n toFloorTowardNegativeInfinity: \"F\",\r\n toNearest05: \"N05\",\r\n toNearest05Alt: \"CHF\",\r\n upToNext05: \"U05\",\r\n downToNext05: \"D05\"\r\n },\r\n\r\n /* Set to `true` to allow the `decimalPlacesShownOnFocus` value to be saved with sessionStorage\r\n * If IE 6 or 7 is detected, the value will be saved as a session cookie.\r\n */\r\n saveValueToSessionStorage: {\r\n save: true,\r\n doNotSave: false\r\n },\r\n\r\n /* Determine if the select all keyboard command will select the complete input text, or only the input numeric value\r\n * Note : If the currency symbol is between the numeric value and the negative sign, only the numeric value will be selected\r\n */\r\n selectNumberOnly: {\r\n selectNumbersOnly: true,\r\n selectAll: false\r\n },\r\n\r\n /* Defines if the element value should be selected on focus.\r\n * Note: The selection is done using the `selectNumberOnly` option.\r\n */\r\n selectOnFocus: {\r\n select: true,\r\n doNotSelect: false\r\n },\r\n\r\n /* Defines how the serialize functions should treat the spaces.\r\n * Those spaces ' ' can either be converted to the plus sign '+', which is the default, or to '%20'.\r\n * Both values being valid per the spec (http://www.w3.org/Addressing/URL/uri-spec.html).\r\n * Also see the summed up answer on http://stackoverflow.com/a/33939287.\r\n *\r\n * tl;dr : Spaces should be converted to '%20' before the '?' sign, then converted to '+' after.\r\n * In our case since we serialize the query, we use '+' as the default (but allow the user to get back the old *wrong* behavior).\r\n */\r\n serializeSpaces: {\r\n plus: \"+\",\r\n percent: \"%20\"\r\n },\r\n\r\n /* Defines if the element value should be converted to the raw value on focus (and back to the formatted on blur).\r\n * If set to `true`, then autoNumeric remove the thousand separator, currency symbol and suffix on focus.\r\n * Example:\r\n * If the input value is '$ 1,999.88 suffix', on focus it becomes '1999.88' and back to '$ 1,999.88 suffix' on blur.\r\n */\r\n showOnlyNumbersOnFocus: {\r\n onlyNumbers: true,\r\n showAll: false\r\n },\r\n\r\n /* Allow the positive sign symbol `+` to be displayed for positive numbers.\r\n * By default, this positive sign is not shown.\r\n * The sign placement is controlled by the 'negativePositiveSignPlacement' option, mimicking the negative sign placement rules.\r\n */\r\n showPositiveSign: {\r\n show: true,\r\n hide: false\r\n },\r\n\r\n /* Defines if warnings should be shown in the console.\r\n * Those warnings can be ignored, but are usually printed when something could be improved by the user (ie. option conflicts).\r\n */\r\n showWarnings: {\r\n show: true, // All warning are shown\r\n hide: false // No warnings are shown, only the thrown errors\r\n },\r\n\r\n /* Defines the rules that calculate the CSS class(es) to apply on the element, based on the raw unformatted value.\r\n * This can also be used to call callbacks whenever the `rawValue` is updated.\r\n * Important: all callbacks must return `null` if no ranges/userDefined classes are selected\r\n * @example\r\n * {\r\n * positive : 'autoNumeric-positive', // Or `null` to not use it\r\n * negative : 'autoNumeric-negative',\r\n * ranges : [\r\n * { min: 0, max: 25, class: 'autoNumeric-red' },\r\n * { min: 25, max: 50, class: 'autoNumeric-orange' },\r\n * { min: 50, max: 75, class: 'autoNumeric-yellow' },\r\n * { min: 75, max: Number.MAX_SAFE_INTEGER, class: 'autoNumeric-green' },\r\n * ],\r\n * userDefined: [\r\n * // If 'classes' is a string, set it if `true`, remove it if `false`\r\n * { callback: rawValue => { return true; }, classes: 'thisIsTrue' },\r\n * // If 'classes' is an array with only 2 elements, set the first class if `true`, the second if `false`\r\n * { callback: rawValue => rawValue % 2 === 0, classes: ['autoNumeric-even', 'autoNumeric-odd'] },\r\n * // Return only one index to use on the `classes` array (here, 'class3')\r\n * { callback: rawValue => { return 2; }, classes: ['class1', 'class2', 'class3'] },\r\n * // Return an array of indexes to use on the `classes` array (here, 'class1' and 'class3')\r\n * { callback: rawValue => { return [0, 2]; }, classes: ['class1', 'class2', 'class3'] },\r\n * // If 'classes' is `undefined` or `null`, then the callback is called with the AutoNumeric object passed as a parameter\r\n * { callback: anElement => { return anElement.getFormatted(); } },\r\n * ],\r\n * }\r\n */\r\n styleRules: {\r\n none: null,\r\n positiveNegative: {\r\n positive: \"autoNumeric-positive\",\r\n negative: \"autoNumeric-negative\"\r\n },\r\n range0To100With4Steps: {\r\n ranges: [\r\n { min: 0, max: 25, class: \"autoNumeric-red\" },\r\n { min: 25, max: 50, class: \"autoNumeric-orange\" },\r\n { min: 50, max: 75, class: \"autoNumeric-yellow\" },\r\n { min: 75, max: 100, class: \"autoNumeric-green\" }\r\n ]\r\n },\r\n evenOdd: {\r\n userDefined: [{ callback: (rawValue) => rawValue % 2 === 0, classes: [\"autoNumeric-even\", \"autoNumeric-odd\"] }]\r\n },\r\n rangeSmallAndZero: {\r\n userDefined: [\r\n {\r\n callback: (rawValue) => {\r\n if (rawValue >= -1 && rawValue < 0) {\r\n return 0;\r\n }\r\n if (Number(rawValue) === 0) {\r\n return 1;\r\n }\r\n if (rawValue > 0 && rawValue <= 1) {\r\n return 2;\r\n }\r\n\r\n return null; // In case the rawValue is outside those ranges\r\n },\r\n classes: [\"autoNumeric-small-negative\", \"autoNumeric-zero\", \"autoNumeric-small-positive\"]\r\n }\r\n ]\r\n }\r\n },\r\n\r\n /* Add a text on the right hand side of the element value.\r\n * This suffix text can have any characters in its string, except numeric characters and the negative/positive sign.\r\n * Example: ' dollars'\r\n */\r\n suffixText: {\r\n none: \"\",\r\n percentage: \"%\",\r\n permille: \"‰\",\r\n basisPoint: \"‱\"\r\n },\r\n\r\n /* The three options (divisorWhenUnfocused, decimalPlacesShownOnBlur & symbolWhenUnfocused) handle scaling of the input when the input does not have focus\r\n * Please note that the non-scaled value is held in data and it is advised that you use the `saveValueToSessionStorage` option to ensure retaining the value\r\n * [\"divisor\", \"decimal places\", \"symbol\"]\r\n * Example: with the following options set {divisorWhenUnfocused: '1000', decimalPlacesShownOnBlur: '1', symbolWhenUnfocused: ' K'}\r\n * Example: focusin value \"1,111.11\" focusout value \"1.1 K\"\r\n */\r\n\r\n /* The `symbolWhenUnfocused` option is a symbol placed as a suffix when not in focus.\r\n * This is optional too.\r\n */\r\n symbolWhenUnfocused: {\r\n none: null,\r\n percentage: \"%\",\r\n permille: \"‰\",\r\n basisPoint: \"‱\"\r\n },\r\n\r\n /* Defines if the element value should be unformatted when the user hover his mouse over it while holding the `Alt` key.\r\n * Unformatting there means that this removes any non-number characters and displays the *raw* value, as understood by Javascript (ie. `12.34` is a valid number, while `12,34` is not).\r\n *\r\n * We reformat back before anything else if :\r\n * - the user focus on the element by tabbing or clicking into it,\r\n * - the user releases the `Alt` key, and\r\n * - if we detect a mouseleave event.\r\n *\r\n * We unformat again if :\r\n * - while the mouse is over the element, the user hit `Alt` again\r\n */\r\n unformatOnHover: {\r\n unformat: true,\r\n doNotUnformat: false //TODO Rename to `keepFormat`\r\n },\r\n\r\n /* Removes the formatting and use the raw value in each autoNumeric elements of the parent form element, on the form `submit` event.\r\n * The output format is a numeric string (nnnn.nn or -nnnn.nn).\r\n */\r\n unformatOnSubmit: {\r\n unformat: true,\r\n keepCurrentValue: false\r\n },\r\n\r\n /* Provides a way for automatically replacing the formatted value with a pre-defined string, when the raw value is equal to a specific value\r\n * Here you can specify as many 'conversion' as needed.\r\n */\r\n valuesToStrings: {\r\n none: null,\r\n zeroDash: {\r\n 0: \"-\"\r\n },\r\n oneAroundZero: {\r\n \"-1\": \"Min\",\r\n 1: \"Max\"\r\n }\r\n },\r\n\r\n /* Defines if the AutoNumeric element should watch external changes made without using `.set()`, but by using the basic `aNElement.node().value = 42` notation.\r\n * If set to `watch`, then AutoNumeric will format the new value using `.set()` internally.\r\n * Otherwise it will neither format it, nor save it in the history.\r\n */\r\n watchExternalChanges: {\r\n watch: true,\r\n doNotWatch: false\r\n },\r\n\r\n /* Defines when the wheel event will increment or decrement the element value.\r\n * When set to `'focus'`, the AutoNumeric-managed element needs to be focused for the wheel event to change the value.\r\n * When set to `'hover'`, using the wheel event while the mouse is hovering the element is sufficient (no focus needed).\r\n *\r\n * Note :\r\n * When `wheelOn` is set to `'focus'`, you can use the 'Shift' modifier key while using the mouse wheel in order to temporarily activate the increment/decrement feature even if the element is not focused.\r\n * When `wheelOn` is set to `'hover'`, you can use the 'Shift' modifier key while using the mouse wheel in order to temporarily disable the increment/decrement feature even if the element is not hovered.\r\n */\r\n wheelOn: {\r\n focus: \"focus\",\r\n hover: \"hover\"\r\n },\r\n\r\n /* That option is linked to the `modifyValueOnWheel` one and will only be used if the latter is set to `true`.\r\n * This option will modify the wheel behavior and can be used in two ways, either by setting :\r\n * - a 'fixed' step value (a positive float or integer number `1000`), or\r\n * - the `'progressive'` string.\r\n *\r\n * The 'fixed' mode always increment/decrement the element value by that amount, while respecting the `minimumValue` and `maximumValue` settings.\r\n * The 'progressive' mode will increment/decrement the element value based on its current value. The bigger the number, the bigger the step, and vice versa.\r\n */\r\n wheelStep: {\r\n progressive: \"progressive\"\r\n }\r\n};\r\n\r\n/**\r\n * Simple function that will semi-deep freeze the `AutoNumeric.options` object.\r\n * By 'semi' it means the nested objects in the `styleRules` option are not frozen.\r\n * The ones in the `valuesToStrings` are though, since they are much more simple.\r\n *\r\n * @param {object} options\r\n * @returns {ReadonlyArray<any>}\r\n */\r\nfunction freezeOptions(options) {\r\n // Freeze each property objects\r\n Object.getOwnPropertyNames(options).forEach((optionName) => {\r\n if (optionName === \"valuesToStrings\") {\r\n const vsProps = Object.getOwnPropertyNames(options.valuesToStrings);\r\n vsProps.forEach((valuesToStringObjectName) => {\r\n if (!AutoNumericHelper.isIE11() && options.valuesToStrings[valuesToStringObjectName] !== null) {\r\n Object.freeze(options.valuesToStrings[valuesToStringObjectName]);\r\n }\r\n });\r\n } else if (optionName !== \"styleRules\") {\r\n if (!AutoNumericHelper.isIE11() && options[optionName] !== null) {\r\n Object.freeze(options[optionName]);\r\n }\r\n }\r\n });\r\n\r\n // Then freeze the options object globally\r\n return Object.freeze(options);\r\n}\r\n\r\nfreezeOptions(AutoNumeric.options);\r\nObject.defineProperty(AutoNumeric, \"options\", { configurable: false, writable: false });\r\n\r\nexport default AutoNumeric.options;\r\n","/**\r\n * Default settings for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumeric from \"./AutoNumeric\";\r\nimport AutoNumericOptions from \"./AutoNumericOptions\";\r\n\r\n/* eslint no-unused-vars: 0 */\r\n\r\n/**\r\n * The defaults options.\r\n * These can be overridden by the following methods:\r\n * - HTML5 data attributes (ie. `<input type=\"text\" data-currency-symbol=\" €\">`)\r\n * - Options passed to the `update` method (ie. `anElement.update({ currencySymbol: ' €' });`), or simply during the initialization (ie. `new AutoNumeric(domElement, { options });`)\r\n */\r\nAutoNumeric.defaultSettings = {\r\n allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.always,\r\n alwaysAllowDecimalCharacter: AutoNumeric.options.alwaysAllowDecimalCharacter.doNotAllow,\r\n caretPositionOnFocus: AutoNumeric.options.caretPositionOnFocus.doNoForceCaretPosition,\r\n createLocalList: AutoNumeric.options.createLocalList.createList,\r\n currencySymbol: AutoNumeric.options.currencySymbol.none,\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.prefix,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n decimalCharacterAlternative: AutoNumeric.options.decimalCharacterAlternative.none,\r\n decimalPlaces: AutoNumeric.options.decimalPlaces.two,\r\n decimalPlacesRawValue: AutoNumeric.options.decimalPlacesRawValue.useDefault,\r\n decimalPlacesShownOnBlur: AutoNumeric.options.decimalPlacesShownOnBlur.useDefault,\r\n decimalPlacesShownOnFocus: AutoNumeric.options.decimalPlacesShownOnFocus.useDefault,\r\n defaultValueOverride: AutoNumeric.options.defaultValueOverride.doNotOverride,\r\n digitalGroupSpacing: AutoNumeric.options.digitalGroupSpacing.three,\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma,\r\n divisorWhenUnfocused: AutoNumeric.options.divisorWhenUnfocused.none,\r\n emptyInputBehavior: AutoNumeric.options.emptyInputBehavior.focus,\r\n eventBubbles: AutoNumeric.options.eventBubbles.bubbles,\r\n eventIsCancelable: AutoNumeric.options.eventIsCancelable.isCancelable,\r\n failOnUnknownOption: AutoNumeric.options.failOnUnknownOption.ignore,\r\n formatOnPageLoad: AutoNumeric.options.formatOnPageLoad.format,\r\n formulaMode: AutoNumeric.options.formulaMode.disabled,\r\n historySize: AutoNumeric.options.historySize.medium,\r\n invalidClass: AutoNumeric.options.invalidClass,\r\n isCancellable: AutoNumeric.options.isCancellable.cancellable,\r\n leadingZero: AutoNumeric.options.leadingZero.deny,\r\n maximumValue: AutoNumeric.options.maximumValue.tenTrillions,\r\n minimumValue: AutoNumeric.options.minimumValue.tenTrillions,\r\n modifyValueOnWheel: AutoNumeric.options.modifyValueOnWheel.modifyValue,\r\n negativeBracketsTypeOnBlur: AutoNumeric.options.negativeBracketsTypeOnBlur.none,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.none,\r\n negativeSignCharacter: AutoNumeric.options.negativeSignCharacter.hyphen,\r\n noEventListeners: AutoNumeric.options.noEventListeners.addEvents,\r\n //TODO Shouldn't we use `truncate` as the default value?\r\n onInvalidPaste: AutoNumeric.options.onInvalidPaste.error,\r\n outputFormat: AutoNumeric.options.outputFormat.none,\r\n overrideMinMaxLimits: AutoNumeric.options.overrideMinMaxLimits.doNotOverride,\r\n positiveSignCharacter: AutoNumeric.options.positiveSignCharacter.plus,\r\n rawValueDivisor: AutoNumeric.options.rawValueDivisor.none,\r\n readOnly: AutoNumeric.options.readOnly.readWrite,\r\n roundingMethod: AutoNumeric.options.roundingMethod.halfUpSymmetric,\r\n saveValueToSessionStorage: AutoNumeric.options.saveValueToSessionStorage.doNotSave,\r\n selectNumberOnly: AutoNumeric.options.selectNumberOnly.selectNumbersOnly,\r\n selectOnFocus: AutoNumeric.options.selectOnFocus.select,\r\n serializeSpaces: AutoNumeric.options.serializeSpaces.plus,\r\n showOnlyNumbersOnFocus: AutoNumeric.options.showOnlyNumbersOnFocus.showAll,\r\n showPositiveSign: AutoNumeric.options.showPositiveSign.hide,\r\n showWarnings: AutoNumeric.options.showWarnings.show,\r\n styleRules: AutoNumeric.options.styleRules.none,\r\n suffixText: AutoNumeric.options.suffixText.none,\r\n symbolWhenUnfocused: AutoNumeric.options.symbolWhenUnfocused.none,\r\n unformatOnHover: AutoNumeric.options.unformatOnHover.unformat,\r\n unformatOnSubmit: AutoNumeric.options.unformatOnSubmit.keepCurrentValue,\r\n valuesToStrings: AutoNumeric.options.valuesToStrings.none,\r\n watchExternalChanges: AutoNumeric.options.watchExternalChanges.doNotWatch,\r\n wheelOn: AutoNumeric.options.wheelOn.focus,\r\n wheelStep: AutoNumeric.options.wheelStep.progressive\r\n};\r\n\r\nObject.freeze(AutoNumeric.defaultSettings);\r\nObject.defineProperty(AutoNumeric, \"defaultSettings\", { configurable: false, writable: false });\r\n\r\nexport default AutoNumeric.defaultSettings;\r\n","/**\r\n * Pre-defined options for autoNumeric.js\r\n * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu>\r\n * @copyright © 2019 Alexandre Bonneau\r\n *\r\n * The MIT License (http://www.opensource.org/licenses/mit-license.php)\r\n *\r\n * Permission is hereby granted, free of charge, to any person\r\n * obtaining a copy of this software and associated documentation\r\n * files (the \"Software\"), to deal in the Software without\r\n * restriction, including without limitation the rights to use,\r\n * copy, modify, merge, publish, distribute, sub license, and/or sell\r\n * copies of the Software, and to permit persons to whom the\r\n * Software is furnished to do so, subject to the following\r\n * conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\n * OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\n\r\nimport AutoNumeric from \"./AutoNumeric\";\r\nimport AutoNumericHelper from \"./AutoNumericHelper\";\r\n\r\nconst euro = {\r\n // Français\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.dot, // or '\\u202f'\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.comma,\r\n decimalCharacterAlternative: AutoNumeric.options.decimalCharacterAlternative.dot,\r\n currencySymbol: \"\\u202f€\",\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.suffix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.prefix\r\n};\r\n\r\nconst dollar = {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.dollar,\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.prefix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right\r\n};\r\n\r\nconst japanese = {\r\n // 日本語\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.yen,\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.prefix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right\r\n};\r\n\r\n// Here we need to clone the initial objects in order to be able to edit the clones without affecting the originals\r\nconst euroF = AutoNumericHelper.cloneObject(euro);\r\neuroF.formulaMode = AutoNumeric.options.formulaMode.enabled;\r\nconst euroPos = AutoNumericHelper.cloneObject(euro);\r\neuroPos.minimumValue = 0;\r\nconst euroNeg = AutoNumericHelper.cloneObject(euro);\r\neuroNeg.maximumValue = 0;\r\neuroNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix;\r\n\r\nconst euroSpace = AutoNumericHelper.cloneObject(euro);\r\neuroSpace.digitGroupSeparator = AutoNumeric.options.digitGroupSeparator.normalSpace;\r\nconst euroSpacePos = AutoNumericHelper.cloneObject(euroSpace);\r\neuroSpacePos.minimumValue = 0;\r\nconst euroSpaceNeg = AutoNumericHelper.cloneObject(euroSpace);\r\neuroSpaceNeg.maximumValue = 0;\r\neuroSpaceNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix;\r\n\r\nconst percentageEU2dec = AutoNumericHelper.cloneObject(euro);\r\npercentageEU2dec.currencySymbol = AutoNumeric.options.currencySymbol.none;\r\npercentageEU2dec.suffixText = `\\u202f${AutoNumeric.options.suffixText.percentage}`;\r\npercentageEU2dec.wheelStep = 0.0001; // This targets the `rawValue`, not the formatted one\r\npercentageEU2dec.rawValueDivisor = AutoNumeric.options.rawValueDivisor.percentage;\r\nconst percentageEU2decPos = AutoNumericHelper.cloneObject(percentageEU2dec);\r\npercentageEU2decPos.minimumValue = 0;\r\nconst percentageEU2decNeg = AutoNumericHelper.cloneObject(percentageEU2dec);\r\npercentageEU2decNeg.maximumValue = 0;\r\npercentageEU2decNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix;\r\n\r\nconst percentageEU3dec = AutoNumericHelper.cloneObject(percentageEU2dec);\r\npercentageEU3dec.decimalPlaces = 3;\r\nconst percentageEU3decPos = AutoNumericHelper.cloneObject(percentageEU2decPos);\r\npercentageEU3decPos.decimalPlaces = 3;\r\nconst percentageEU3decNeg = AutoNumericHelper.cloneObject(percentageEU2decNeg);\r\npercentageEU3decNeg.decimalPlaces = 3;\r\n\r\nconst dollarF = AutoNumericHelper.cloneObject(dollar);\r\ndollarF.formulaMode = AutoNumeric.options.formulaMode.enabled;\r\nconst dollarPos = AutoNumericHelper.cloneObject(dollar);\r\ndollarPos.minimumValue = 0;\r\nconst dollarNeg = AutoNumericHelper.cloneObject(dollar);\r\ndollarNeg.maximumValue = 0;\r\ndollarNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix;\r\nconst dollarNegBrackets = AutoNumericHelper.cloneObject(dollarNeg);\r\ndollarNegBrackets.negativeBracketsTypeOnBlur = AutoNumeric.options.negativeBracketsTypeOnBlur.parentheses;\r\n\r\nconst percentageUS2dec = AutoNumericHelper.cloneObject(dollar);\r\npercentageUS2dec.currencySymbol = AutoNumeric.options.currencySymbol.none;\r\npercentageUS2dec.suffixText = AutoNumeric.options.suffixText.percentage;\r\npercentageUS2dec.wheelStep = 0.0001;\r\npercentageUS2dec.rawValueDivisor = AutoNumeric.options.rawValueDivisor.percentage;\r\nconst percentageUS2decPos = AutoNumericHelper.cloneObject(percentageUS2dec);\r\npercentageUS2decPos.minimumValue = 0;\r\nconst percentageUS2decNeg = AutoNumericHelper.cloneObject(percentageUS2dec);\r\npercentageUS2decNeg.maximumValue = 0;\r\npercentageUS2decNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix;\r\n\r\nconst percentageUS3dec = AutoNumericHelper.cloneObject(percentageUS2dec);\r\npercentageUS3dec.decimalPlaces = 3;\r\nconst percentageUS3decPos = AutoNumericHelper.cloneObject(percentageUS2decPos);\r\npercentageUS3decPos.decimalPlaces = 3;\r\nconst percentageUS3decNeg = AutoNumericHelper.cloneObject(percentageUS2decNeg);\r\npercentageUS3decNeg.decimalPlaces = 3;\r\n\r\nconst turkish = AutoNumericHelper.cloneObject(euro);\r\nturkish.currencySymbol = AutoNumeric.options.currencySymbol.lira;\r\n\r\n/**\r\n * Predefined options for the most common languages\r\n */\r\nAutoNumeric.predefinedOptions = {\r\n euro,\r\n euroPos,\r\n euroNeg,\r\n euroSpace,\r\n euroSpacePos,\r\n euroSpaceNeg,\r\n percentageEU2dec,\r\n percentageEU2decPos,\r\n percentageEU2decNeg,\r\n percentageEU3dec,\r\n percentageEU3decPos,\r\n percentageEU3decNeg,\r\n dollar,\r\n dollarPos,\r\n dollarNeg,\r\n dollarNegBrackets,\r\n percentageUS2dec,\r\n percentageUS2decPos,\r\n percentageUS2decNeg,\r\n percentageUS3dec,\r\n percentageUS3decPos,\r\n percentageUS3decNeg,\r\n French: euro, // Français\r\n Spanish: euro, // Español\r\n NorthAmerican: dollar,\r\n British: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.pound,\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.prefix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right\r\n },\r\n Swiss: {\r\n // Suisse\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.apostrophe,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: \"\\u202fCHF\",\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.suffix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.prefix\r\n },\r\n Japanese: japanese, // 日本語\r\n Chinese: japanese, // ä¸å›½èªž (Chinese)\r\n Brazilian: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.dot,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.comma,\r\n currencySymbol: AutoNumeric.options.currencySymbol.real,\r\n currencySymbolPlacement: AutoNumeric.options.currencySymbolPlacement.prefix,\r\n negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right\r\n },\r\n Turkish: turkish,\r\n dotDecimalCharCommaSeparator: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot\r\n },\r\n commaDecimalCharDotSeparator: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.dot,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.comma,\r\n decimalCharacterAlternative: AutoNumeric.options.decimalCharacterAlternative.dot\r\n },\r\n integer: {\r\n decimalPlaces: 0\r\n },\r\n integerPos: {\r\n minimumValue: AutoNumeric.options.minimumValue.zero,\r\n decimalPlaces: 0\r\n },\r\n integerNeg: {\r\n maximumValue: AutoNumeric.options.maximumValue.zero,\r\n decimalPlaces: 0\r\n },\r\n float: {\r\n allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never\r\n },\r\n floatPos: {\r\n allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never,\r\n minimumValue: AutoNumeric.options.minimumValue.zero,\r\n maximumValue: AutoNumeric.options.maximumValue.tenTrillions\r\n },\r\n floatNeg: {\r\n allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never,\r\n minimumValue: AutoNumeric.options.minimumValue.tenTrillions,\r\n maximumValue: AutoNumeric.options.maximumValue.zero\r\n },\r\n numeric: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.none\r\n },\r\n numericPos: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.none,\r\n minimumValue: AutoNumeric.options.minimumValue.zero,\r\n maximumValue: AutoNumeric.options.maximumValue.tenTrillions\r\n },\r\n numericNeg: {\r\n digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator,\r\n decimalCharacter: AutoNumeric.options.decimalCharacter.dot,\r\n currencySymbol: AutoNumeric.options.currencySymbol.none,\r\n minimumValue: AutoNumeric.options.minimumValue.tenTrillions,\r\n maximumValue: AutoNumeric.options.maximumValue.zero\r\n }\r\n};\r\n\r\nObject.getOwnPropertyNames(AutoNumeric.predefinedOptions).forEach((optionName) => {\r\n Object.freeze(AutoNumeric.predefinedOptions[optionName]);\r\n});\r\nObject.freeze(AutoNumeric.predefinedOptions);\r\nObject.defineProperty(AutoNumeric, \"predefinedOptions\", { configurable: false, writable: false });\r\n\r\nexport default AutoNumeric.predefinedOptions;\r\n","<template>\r\n <input type=\"text\" @change=\"actualizarValor()\" />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nimport AutoNumeric from \"@/lib/autonumeric\";\r\n\r\nexport default defineComponent({\r\n data() {\r\n return {\r\n instancia: null as any\r\n };\r\n },\r\n methods: {\r\n actualizarValor() {\r\n this.$emit(\"update:modelValue\", this.instancia.getNumber());\r\n }\r\n },\r\n watch: {\r\n modelValue(value) {\r\n this.instancia.set(value);\r\n },\r\n configuracion(valor) {\r\n if (this.instancia) this.instancia.set(this.instancia.getNumericString(), valor);\r\n }\r\n },\r\n props: {\r\n configuracion: {\r\n type: Object as any,\r\n default: null\r\n },\r\n modelValue: {\r\n type: [Number, String]\r\n }\r\n },\r\n mounted() {\r\n let valor = this.modelValue as number;\r\n if (isNaN(valor)) valor = 0;\r\n if (this.configuracion) this.instancia = new AutoNumeric(this.$el, valor, this.configuracion);\r\n else this.instancia = new AutoNumeric(this.$el, valor, null);\r\n },\r\n beforeUnmount() {\r\n let au = this.instancia;\r\n if (au) au.remove();\r\n }\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.row\r\n .col-md-4\r\n p.fs-5.mb-2(style=\"color: #94a3b0\") {{ etiquetaHeader }}\r\n .col-md-8\r\n hr\r\n .col-md-12\r\n .p-2.mb-2(style=\"border: 1px solid var(--bs-primary); color: #6f6f6f; background-color: #eb811326\"): .row\r\n .col-md-3\r\n label.form-label Num. de {{ etiquetaConcepto }}\r\n hir-autonumeric.form-control(:form=\"formId\" v-model.number=\"cantidad\" :configuracion=\"{ maximumValue: '9', minimumValue: '0', decimalPlaces: 0 }\")\r\n .invalid-feedback Num. de {{ etiquetaConcepto }} invalido.\r\n .col-md-9\r\n p Documentos requeridos:\r\n .documentos-requeridos\r\n .form-check.form-check-inline(v-for=\"doc in documentos\")\r\n input.form-check-input(type=\"checkbox\" :checked=\"doc.requerido\" disabled)\r\n label.form-check-label {{ doc.nombre }}\r\n template(v-for=\"(empresa, i) in comprobacionIngresosGeneral\")\r\n div(v-bind:class=\"[esPregunta ? 'col-md-5 mb-3' : 'col-md-9 mb-3']\")\r\n label.form-check-label Especifique Concepto de {{ etiquetaConcepto }}:\r\n input.form-control(:form=\"formId\" v-model.lazy=\"empresa.concepto\" type=\"text\" pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ\\\\-#\\\\. ]+\" required=\"true\")\r\n .invalid-feedback Concepto de {{ etiquetaConcepto }} invalido.\r\n .col-md-4(v-if=\"esPregunta\")\r\n label.form-check-label ¿Es socio o dueño de la empresa en la que labora?\r\n div\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n :id=\"componentId + 'SiDuenoPropietario' + i\"\r\n type=\"radio\"\r\n :value=\"true\"\r\n :name=\"componentId + 'DuenoPropietario' + i\"\r\n v-model=\"empresa.esSocio\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'SiDuenoPropietario' + i\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n :id=\"componentId + 'NoDuenoPropietario' + i\"\r\n type=\"radio\"\r\n :value=\"false\"\r\n :name=\"componentId + 'DuenoPropietario' + i\"\r\n v-model=\"empresa.esSocio\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'NoDuenoPropietario' + i\") No\r\n .col-md-3\r\n label.form-check-label Especifique Monto:\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"empresa.monto\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback Especifique Monto invalido.\r\n .col-md-9.text-end\r\n br\r\n label.form-check-label Total de {{ etiquetaConcepto }}:\r\n .col-md-3\r\n br\r\n hir-autonumeric.form-control(v-model=\"total\" readonly :configuracion=\"{ currencySymbol: '$ ' }\")\r\n br\r\n br\r\n .form.text-center(ref=\"form\" novalidate :id=\"componentId + 'form'\"): button.btn.btn-primary.text-light.fw-bold.mt-4(@click.prevent=\"$emit('guardar')\") Guardar\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch } from \"vue\";\r\nimport HirAutonumeric from \"@/components/HirAutonumeric.vue\";\r\nimport type {\r\n ComprobacionIngresos,\r\n DocumentoComprobacionIngresos,\r\n IngresoGeneral\r\n} from \"../../../composables/EstudioSocioeconomico\";\r\nimport * as utilidades from \"@/utilidades\";\r\n\r\nconst componentId = utilidades.generarId();\r\n\r\ninterface Props {\r\n esComprobacionIngresos?: ComprobacionIngresos;\r\n formId: string;\r\n documentos: DocumentoComprobacionIngresos[];\r\n etiquetaConcepto: string;\r\n etiquetaHeader: string;\r\n propiedadCantidad: string;\r\n propiedadArreglo: string;\r\n esPregunta: boolean;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n esComprobacionIngresos: undefined,\r\n formId: \"\",\r\n documentos: () => [],\r\n etiquetaConcepto: \"\",\r\n etiquetaHeader: \"\",\r\n propiedadCantidad: \"\",\r\n propiedadArreglo: \"\",\r\n esPregunta: false\r\n});\r\n\r\nlet cantidad = ref(0);\r\n\r\nconst total = computed((): number => comprobacionIngresosGeneral.value.reduce((prev, curr) => prev + curr.monto, 0));\r\nconst comprobacionIngresosGeneral = computed({\r\n get: (): IngresoGeneral[] => {\r\n if (!props.esComprobacionIngresos) return [];\r\n return (\r\n Object.entries(props.esComprobacionIngresos).find(\r\n (e) => e[0] == props.propiedadArreglo\r\n )![1] as typeof props.esComprobacionIngresos.actividadEmpresarial\r\n ).value;\r\n },\r\n set: (val) => {\r\n if (!props.esComprobacionIngresos) return;\r\n (\r\n Object.entries(props.esComprobacionIngresos).find(\r\n (e) => e[0] == props.propiedadArreglo\r\n )![1] as typeof props.esComprobacionIngresos.actividadEmpresarial\r\n ).value = val;\r\n }\r\n});\r\n\r\nwatch(cantidad, (val, oldVal) => {\r\n if (!props.esComprobacionIngresos) return;\r\n let ci = comprobacionIngresosGeneral.value;\r\n if (isNaN(val) || val < 0) return;\r\n if (isNaN(oldVal) || oldVal < 0) oldVal = 0;\r\n if (val === 0) {\r\n comprobacionIngresosGeneral.value = [];\r\n } else if (val < oldVal && ci.length != val) {\r\n ci.splice(val - 1, oldVal - val);\r\n } else if (val > oldVal && val != ci.length) {\r\n ci.push(\r\n ...Array.from(Array(val - oldVal).keys()).map(() => ({\r\n monto: 0,\r\n concepto: \"\",\r\n esSocio: false\r\n }))\r\n );\r\n }\r\n (\r\n Object.entries(props.esComprobacionIngresos).find(\r\n (e) => e[0] == props.propiedadCantidad\r\n )![1] as typeof props.esComprobacionIngresos.cantidadActividadEmpresarial\r\n ).value = val;\r\n});\r\n\r\nif (props.esComprobacionIngresos) {\r\n let cic = (\r\n Object.entries(props.esComprobacionIngresos!).find(\r\n (e) => e[0] == props.propiedadCantidad\r\n )![1] as typeof props.esComprobacionIngresos.cantidadActividadEmpresarial\r\n ).value;\r\n if (cantidad.value < cic) cantidad.value = cic;\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.documentos-requeridos {\r\n .form-check-input:disabled ~ label {\r\n color: #6f6f6f;\r\n opacity: 1;\r\n }\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\ndiv\r\n .row\r\n .col-md-4.text-center.justify-content-center\r\n p.fs-5.mb-2(style=\"color: #94a3b0\") Empleado con Salario por Nómina\r\n .col-md-8\r\n hr\r\n .row: .col-md-12\r\n .p-2.mb-2(style=\"border: 1px solid var(--bs-primary); color: #6f6f6f; background-color: #eb811326\"): .row\r\n .col-md-3\r\n label.form-label Número de Empresas para las que labora:\r\n input.form-control(\r\n :form=\"props.formId\"\r\n v-model.number.lazy=\"esComprobacionIngresos.cantidadNomina.value\"\r\n type=\"number\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n max=\"5\"\r\n step=\"any\"\r\n )\r\n .invalid-feedback Núm. de Empresas para las que Labora invalido.\r\n .col-md-9\r\n p Documentos requeridos:\r\n .documentos-requeridos\r\n .form-check.form-check-inline(v-for=\"doc in esComprobacionIngresos.documentosNomina.value\")\r\n input.form-check-input(type=\"checkbox\" :checked=\"doc.requerido\" disabled)\r\n label.form-check-label {{ doc.nombre }}\r\n template(v-if=\"nominaActual\")\r\n .row\r\n .col-md-3\r\n label.form-label Empresa en la que Labora\r\n br\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model.lazy=\"nominaActual.empresa\" required=\"true\")\r\n .invalid-feedback Empresa en la que Labora invalido.\r\n .col-md-3\r\n label.form-label Giro de la Empresa\r\n input.form-control(v-model.lazy=\"nominaActual.actividad\" :form=\"props.formId\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" required=\"true\")\r\n .invalid-feedback Giro de la Empresa invalido.\r\n .col-md-3\r\n label.form-label Teléfono de la Empresa\r\n input.form-control(:form=\"props.formId\" type=\"tel\" pattern=\"[0-9]{10}\" v-model.lazy=\"nominaActual.telefono\" maxlength=\"10\" required=\"true\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Extensión Telefónica\r\n input.form-control(\r\n :form=\"props.formId\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n maxlength=\"8\"\r\n step=\"any\"\r\n v-model.lazy=\"nominaActual.extension\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback Extensión Telefónica invalido.\r\n .row\r\n .col-md-3\r\n label.form-label Correo Electrónico de Trabajo\r\n input.form-control(\r\n :form=\"props.formId\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n v-model.lazy=\"nominaActual.correo\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback Correo Electrónico de Trabajo invalido.\r\n .col-md-3\r\n label.form-label Puesto que Desempeña\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model.lazy=\"nominaActual.puesto\" required=\"true\")\r\n .invalid-feedback Puesto que Desempeña invalido.\r\n //- select.form-select(v-model.lazy=\"nominaActual.puesto\")\r\n option Ejecutivo\r\n option Técnico\r\n option Gerente\r\n option Director\r\n //- .col-md-3\r\n label.form-label Otro Puesto\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model.lazy=\"nominaActual.otroPuesto\")\r\n .invalid-feedback Otro Puesto invalido.\r\n .col-md-3\r\n label.form-label Antigüedad Laboral (Meses)\r\n input.form-control(\r\n :form=\"props.formId\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n max=\"99999\"\r\n maxlength=\"5\"\r\n step=\"any\"\r\n v-model.lazy=\"nominaActual.antiguedad\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback Antigüedad Laboral (Meses) invalido.\r\n .col-md-3\r\n .row\r\n .col-md-3\r\n label.form-label Nombre del Jefe Inmediato\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model.lazy=\"nominaActual.nombreJefe\")\r\n .invalid-feedback Nombre del Jefe Inmediato invalido.\r\n .col-md-3\r\n label.form-label Teléfono del Jefe Inmediato\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"[0-9]{10}\" v-model.lazy=\"nominaActual.telefonoJefe\" maxlength=\"10\")\r\n .invalid-feedback Teléfono del Jefe Inmediato invalido.\r\n .col-md-3\r\n label.form-label Extensión de Jefe Inmediato\r\n input.form-control(:form=\"props.formId\" type=\"text\" pattern=\"^[0-9]+\" v-model.lazy=\"nominaActual.extensionJefe\" maxlength=\"8\")\r\n .invalid-feedback Extensión de Jefe Inmediato invalido.\r\n .col-md-3\r\n label.form-label Sueldo Nominal Bruto\r\n hir-autonumeric.form-control(\r\n :form=\"props.formId\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n v-model.number=\"nominaActual.sueldoBruto\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback Sueldo Nominal Bruto invalido.\r\n .row\r\n .col-md-3\r\n label.form-label ISR e IMSS\r\n hir-autonumeric.form-control(\r\n :form=\"props.formId\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n v-model.number=\"nominaActual.isrImss\"\r\n required=\"true\"\r\n )\r\n .invalid-feedback ISR e IMSS invalido.\r\n .col-md-3\r\n label.form-label Sueldo Nominal Neto\r\n hir-autonumeric.form-control(\r\n :form=\"props.formId\"\r\n :configuracion=\"{ currencySymbol: '$ ' }\"\r\n readonly\r\n v-model=\"esComprobacionIngresosNominaActualSueldoNeto\"\r\n )\r\n .invalid-feedback Sueldo Nominal Neto invalido.\r\n .col-md-12.text-center(v-if=\"esComprobacionIngresos.numeroNominaActual.value\")\r\n div: label.form-label {{ esComprobacionIngresos.numeroNominaActual.value }} / {{ esComprobacionIngresos.cantidadNomina.value }}\r\n .col-md-3.text-end.offset-md-9\r\n label.form-label Total Sueldo Nominal Neto\r\n hir-autonumeric.form-control(readonly v-model=\"sueldoNetoTotal\" :configuracion=\"{ currencySymbol: '$ ' }\")\r\n .col-md-12.text-center(v-if=\"esComprobacionIngresos.numeroNominaActual.value\")\r\n .text-center: .btn-group\r\n button.btn.btn-primary.text-white(v-if=\"esComprobacionIngresos.numeroNominaActual.value > 1\" :form=\"formId\" @click.prevent=\"anteriorNomina()\") Empresa Anterior\r\n button.btn.btn-danger.text-white(:form=\"props.formId\" @click.prevent=\"eliminarNomina()\") Eliminar\r\n button.btn.btn-primary.text-white(\r\n v-if=\"esComprobacionIngresos.numeroNominaActual.value < esComprobacionIngresos.cantidadNomina.value\"\r\n :form=\"props.formId\"\r\n @click.prevent=\"siguienteNomina()\"\r\n ) Siguiente Empresa\r\n br\r\n br\r\n .form.text-center(ref=\"form\" novalidate :id=\"componentId + 'form'\"): button.btn.btn-primary.text-light.fw-bold.mt-4(@click.prevent=\"$emit('guardar')\") Guardar\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport HirAutonumeric from \"@/components/HirAutonumeric.vue\";\r\nimport type { ComprobacionIngresos, IngresoNomina } from \"../../../composables/EstudioSocioeconomico\";\r\nimport { computed, inject, watch, ref, toRef, nextTick } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\n\r\nconst componentId = utilidades.generarId();\r\nconst esComprobacionIngresos: ComprobacionIngresos = inject(\"ComprobacionIngresos\")!;\r\nconst nominaActual = ref(undefined as IngresoNomina | undefined);\r\n\r\nconst esComprobacionIngresosNominaActualSueldoNeto = computed({\r\n get: () => nominaActual?.value?.sueldoNeto! ?? 0,\r\n set: () => {\r\n if (nominaActual?.value?.sueldoNeto == undefined) return;\r\n nominaActual.value.sueldoNeto = (nominaActual.value.sueldoBruto ?? 0) - (nominaActual.value.isrImss ?? 0);\r\n }\r\n});\r\n\r\nconst sueldoNetoTotal = computed((): number => {\r\n return esComprobacionIngresos.nomina.value.reduce((prev, curr) => prev + (curr.sueldoNeto ?? 0), 0);\r\n});\r\n\r\nwatch(\r\n esComprobacionIngresos.cantidadNomina,\r\n (val, oldVal) /* nosonar */ => {\r\n let ci = esComprobacionIngresos;\r\n if (val == undefined) return;\r\n if (isNaN(val) || val < 0) return;\r\n oldVal = utilidades.ifNaN(oldVal);\r\n if (oldVal! < 0) oldVal = 0;\r\n if (val === 0) ci.nomina.value = [];\r\n else if (val < oldVal! && ci.nomina.value.length != val) {\r\n ci.nomina.value.splice(val - 1, oldVal! - val);\r\n } else if (val > oldVal!) {\r\n let allData = ci.nomina.value.length == 0 ? 1 : ci.nomina.value.length;\r\n for (let i = 0; i < allData; i++) {\r\n ci.nomina.value.push(\r\n ...Array.from(Array(val - oldVal!).keys()).map(() => ({\r\n empresa: \"\",\r\n actividad: \"\",\r\n telefono: \"\",\r\n extension: \"\",\r\n correo: \"\",\r\n puesto: \"\",\r\n otroPuesto: \"\",\r\n antiguedad: 0,\r\n nombreJefe: \"\",\r\n telefonoJefe: \"\",\r\n extensionJefe: \"\",\r\n sueldoBruto: 0,\r\n isrImss: 0,\r\n sueldoNeto: 0\r\n }))\r\n );\r\n }\r\n }\r\n if (val === 0) {\r\n nominaActual.value = undefined;\r\n ci.numeroNominaActual.value = 0;\r\n } else if (!nominaActual.value) {\r\n nominaActual.value = ci.nomina.value[0];\r\n ci.numeroNominaActual.value = 1;\r\n } else if (val - ci.numeroNominaActual.value == 1) {\r\n nominaActual.value = ci.nomina.value[val - 1];\r\n ci.numeroNominaActual.value = val;\r\n }\r\n },\r\n { immediate: true }\r\n);\r\n\r\nwatch(\r\n () => (nominaActual.value ? [toRef(nominaActual.value, \"sueldoBruto\"), toRef(nominaActual.value, \"isrImss\")] : []),\r\n () => {\r\n if (nominaActual.value?.sueldoNeto == undefined) return;\r\n nominaActual.value.sueldoNeto = (nominaActual.value.sueldoBruto ?? 0) - (nominaActual.value.isrImss ?? 0);\r\n esComprobacionIngresos.sueldoNetoTotal.value = sueldoNetoTotal.value;\r\n },\r\n { deep: true }\r\n);\r\n\r\nfunction siguienteNomina() {\r\n if (esComprobacionIngresos == undefined) return;\r\n let ci = esComprobacionIngresos;\r\n nominaActual.value = ci.nomina.value[ci.numeroNominaActual.value];\r\n ci.numeroNominaActual.value++;\r\n}\r\n\r\nfunction anteriorNomina() {\r\n if (esComprobacionIngresos == undefined) return;\r\n let ci = esComprobacionIngresos;\r\n ci.numeroNominaActual.value--;\r\n nominaActual.value = ci.nomina.value[ci.numeroNominaActual.value - 1];\r\n}\r\n\r\nasync function eliminarNomina() {\r\n if (esComprobacionIngresos == undefined) return;\r\n let ci = esComprobacionIngresos;\r\n let indexof = ci.nomina.value.indexOf(nominaActual.value!);\r\n ci.nomina.value.splice(indexof, 1);\r\n ci.cantidadNomina.value = ci.nomina.value.length;\r\n if (ci.numeroNominaActual.value > ci.cantidadNomina.value) ci.numeroNominaActual.value--;\r\n if (ci.cantidadNomina.value == 0) {\r\n await nextTick();\r\n ci.cantidadNomina.value = 1;\r\n }\r\n}\r\n\r\ninterface Props {\r\n formId: string;\r\n}\r\nconst props = withDefaults(defineProps<Props>(), {\r\n formId: \"form\"\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\">\r\n.documentos-requeridos {\r\n .form-check-input:disabled ~ label {\r\n color: #6f6f6f;\r\n opacity: 1;\r\n }\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.accordion.shadow.mb-4(:id=\"compId + 'acordion3'\")\r\n .accordion-item: template(v-if=\"estudioSocioeconomico\")\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + compId + 'informacionLaboral'\") Información Laboral\r\n .accordion-collapse.collapse(:id=\"compId + 'informacionLaboral'\" :data-bs-parent=\"'#' + compId + 'acordion3'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Profesión:\r\n select.form-select(v-model=\"estudioSocioeconomico.profesion.value\" v-if=\"catalogos\")\r\n option(v-for=\"prof in catalogos.profesiones.value\" :value=\"prof.profesionId\" :key=\"prof.profesionId\") {{ prof.descripcion }}\r\n .col-md-9\r\n label.form-label Ocupación Actual:\r\n .mt-2\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"1\"\r\n :id=\"compId + 'inputOcupacionActual1'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual1'\") Empleado con Salario por Nómina\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"2\"\r\n :id=\"compId + 'inputOcupacionActual2'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual2'\") Negocio Propio\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"4\"\r\n :id=\"compId + 'inputOcupacionActual3'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual3'\") Actividad Empresarial\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"5\"\r\n :id=\"compId + 'inputOcupacionActual4'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual4'\") Arrendamiento\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"6\"\r\n :id=\"compId + 'inputOcupacionActual5'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual5'\") Concesiones\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"7\"\r\n :id=\"compId + 'inputOcupacionActual6'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual6'\") Otros\r\n .form-check.form-check-inline.me-4\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n v-model=\"estudioSocioeconomico.ocupacionActualArray.value\"\r\n :value=\"3\"\r\n :id=\"compId + 'inputOcupacionActual7'\"\r\n )\r\n label.form-check-lable(:for=\"compId + 'inputOcupacionActual7'\") Pensionado\r\n template(v-if=\"estudioSocioeconomico.ocupacionActual != undefined\") \r\n informacion-laboral-nomina(v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(1)\" :form-id=\"compId + 'form'\" @guardar=\"$emit('guardar')\")\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(4)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Proyectos Comprobables\"\r\n etiqueta-header=\"Actividad Empresarial\"\r\n propiedad-cantidad=\"cantidadActividadEmpresarial\"\r\n propiedad-arreglo=\"actividadEmpresarial\"\r\n :documentos=\"esComprobacionIngresos.documentosActividadEmpresarial.value\"\r\n :es-pregunta=\"true\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(3)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Pensiones Comprobables\"\r\n etiqueta-header=\"Pensionado\"\r\n propiedad-cantidad=\"cantidadPension\"\r\n propiedad-arreglo=\"pension\"\r\n :es-pregunta=\"false\"\r\n :documentos=\"esComprobacionIngresos.documentosPension.value\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(2)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Negocios Propios Comprobables\"\r\n etiqueta-header=\"Negocio Propio\"\r\n propiedad-cantidad=\"cantidadNegocioPropio\"\r\n propiedad-arreglo=\"negocioPropio\"\r\n :es-pregunta=\"false\"\r\n :documentos=\"esComprobacionIngresos.documentosNegocioPropio.value\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(5)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Inmuebles Arrendados Comp.\"\r\n etiqueta-header=\"Arrendamiento\"\r\n propiedad-cantidad=\"cantidadArrendamiento\"\r\n propiedad-arreglo=\"arrendamiento\"\r\n :es-pregunta=\"false\"\r\n :documentos=\"esComprobacionIngresos.documentosArrendamiento.value\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(6)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Concesiones Comprobables\"\r\n etiqueta-header=\"Concesiones\"\r\n propiedad-cantidad=\"cantidadConcesion\"\r\n propiedad-arreglo=\"concesion\"\r\n :es-pregunta=\"false\"\r\n :documentos=\"esComprobacionIngresos.documentosConcesion.value\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n informacion-laboral-general(\r\n v-if=\"estudioSocioeconomico.ocupacionActualArray.value.includes(7)\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :form-id=\"compId + 'form'\"\r\n etiqueta-concepto=\"Otros Ingresos\"\r\n etiqueta-header=\"Otros\"\r\n propiedad-cantidad=\"cantidadOtro\"\r\n propiedad-arreglo=\"otro\"\r\n :es-pregunta=\"false\"\r\n :documentos=\"esComprobacionIngresos.documentosOtro.value\"\r\n @guardar=\"$emit('guardar')\"\r\n )\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { inject, watch, reactive, toRefs } from \"vue\";\r\nimport type { ToRefs } from \"vue\";\r\nimport InformacionLaboralGeneral from \"./InformacionLaboral/CCGeneral.vue\";\r\nimport InformacionLaboralNomina from \"./InformacionLaboral/CCNomina.vue\";\r\nimport { Core } from \"@/servicios/api\";\r\nimport type {\r\n EstudioSocioeconomico,\r\n EstudioSocioeconomicoObligadoSolidario,\r\n ComprobacionIngresos\r\n} from \"../../composables/EstudioSocioeconomico\";\r\n\r\ninterface Props {\r\n estudioSocioeconomico: ToRefs<EstudioSocioeconomico | EstudioSocioeconomicoObligadoSolidario>;\r\n compId: string;\r\n catalogos: ToRefs<{ profesiones: Core.Models.Profesion[] }>;\r\n}\r\nconst props = withDefaults(defineProps<Props>(), {\r\n estudioSocioeconomico: () =>\r\n toRefs(\r\n reactive({\r\n estudioSocioeconomicoId: \"\",\r\n ocupacionActualArray: [],\r\n clienteId: 0,\r\n esAvalObligadoSolidario: false,\r\n esDeclaradoMoratoriaSuspensionPagos: false,\r\n esDemandadoIncumplimientoObligacionesFinancieras: false,\r\n paisNacionalidadId: 0,\r\n version: 0,\r\n trabajaConyuge: false,\r\n notificacionAscesor: false\r\n })\r\n ),\r\n compId: \"\",\r\n catalogos: () => toRefs(reactive({ profesiones: [] }))\r\n});\r\n\r\nconst esComprobacionIngresos: ComprobacionIngresos = inject(\"ComprobacionIngresos\")!;\r\n\r\nwatch(\r\n props.estudioSocioeconomico!.ocupacionActualArray,\r\n (val, _) => {\r\n if (val == undefined) return;\r\n if (val.includes(1) && esComprobacionIngresos.cantidadNomina.value == 0) {\r\n esComprobacionIngresos.cantidadNomina.value = 1;\r\n } else if (val.includes(2) && esComprobacionIngresos.cantidadNegocioPropio.value == 0) {\r\n esComprobacionIngresos.cantidadNegocioPropio.value = 1;\r\n } else if (val.includes(3) && esComprobacionIngresos.cantidadPension.value == 0) {\r\n esComprobacionIngresos.cantidadPension.value = 1;\r\n } else if (val.includes(4) && esComprobacionIngresos.cantidadActividadEmpresarial.value == 0) {\r\n esComprobacionIngresos.cantidadActividadEmpresarial.value = 1;\r\n } else if (val.includes(5) && esComprobacionIngresos.cantidadArrendamiento.value == 0) {\r\n esComprobacionIngresos.cantidadArrendamiento.value = 1;\r\n } else if (val.includes(6) && esComprobacionIngresos.cantidadConcesion.value == 0) {\r\n esComprobacionIngresos.cantidadConcesion.value = 1;\r\n } else if (val.includes(7) && esComprobacionIngresos.cantidadOtro.value == 0) {\r\n esComprobacionIngresos.cantidadOtro.value = 1;\r\n }\r\n },\r\n { deep: true }\r\n);\r\n\r\n{\r\n let ci = esComprobacionIngresos;\r\n if (!ci.documentosNomina.value)\r\n ci.documentosNomina.value = [\r\n { nombre: \"Recibos de Nómina (3 últimos meses)\", requerido: true },\r\n { nombre: \"Estado de Cuenta de Depósitos de Nómina\", requerido: true },\r\n { nombre: \"Carta Laboral\", requerido: true }\r\n ];\r\n if (!!ci.documentosActividadEmpresarial.value)\r\n ci.documentosActividadEmpresarial.value = [\r\n { nombre: \"Estados de Cuenta Personales\", requerido: true },\r\n { nombre: \"Declaraciones Anuales/Mensuales\", requerido: true },\r\n { nombre: \"Recibos de honorarios\", requerido: true },\r\n { nombre: \"Constancia de Declaración Fiscal\", requerido: true },\r\n { nombre: \"Carta bajo protesta decir verdad\", requerido: true },\r\n { nombre: \"Licencia de funcionamiento\", requerido: true },\r\n { nombre: \"Registro de marca (en su caso)\", requerido: true }\r\n ];\r\n if (!ci.documentosPension.value)\r\n ci.documentosPension.value = [\r\n { nombre: \"Estados de Cuenta de Pensión\", requerido: true },\r\n { nombre: \"Recibo de Pensión\", requerido: true },\r\n { nombre: \"Resolución de Otorgamiento de Pensión\", requerido: true }\r\n ];\r\n if (!ci.documentosNegocioPropio.value)\r\n ci.documentosNegocioPropio.value = [\r\n { nombre: \"Estados Financieros\", requerido: true },\r\n { nombre: \"Declaraciones Anuales/Mensuales\", requerido: true },\r\n { nombre: \"Estados de Cuenta Personales\", requerido: true },\r\n { nombre: \"Estados de Cuentas de TPV\", requerido: true },\r\n { nombre: \"Constancia de Situación Fiscal\", requerido: true },\r\n { nombre: \"Licencia de Funcionamiento\", requerido: true },\r\n { nombre: \"Acta Constitutiva\", requerido: true }\r\n ];\r\n if (!ci.documentosArrendamiento.value)\r\n ci.documentosArrendamiento.value = [\r\n { nombre: \"Contratos de Arrendamiento\", requerido: true },\r\n { nombre: \"Estados de Cuenta de Arrendamiento\", requerido: true },\r\n { nombre: \"Declaraciones Anuales/Mensuales\", requerido: true },\r\n { nombre: \"Escritura de los Inmuebles\", requerido: true }\r\n ];\r\n if (!ci.documentosConcesion.value)\r\n ci.documentosConcesion.value = [\r\n { nombre: \"Documento de Concesión\", requerido: true },\r\n { nombre: \"Estados de Cuenta Personales\", requerido: true }\r\n ];\r\n if (!ci.documentosOtro.value)\r\n ci.documentosOtro.value = [\r\n { nombre: \"Carta bajo Protesta de decir la verdad\", requerido: true },\r\n { nombre: \"Estudio Socioeconómico (con costo para el cliente)\", requerido: true }\r\n ];\r\n}\r\n</script>\r\n","export default {\r\n filtroDivisa(numero: number | undefined | null, currency: string = \"MXN\"): string {\r\n if (numero == undefined || numero == null) return \"\";\r\n return new Intl.NumberFormat(\"es-MX\", { style: \"currency\", currency: currency }).format(numero);\r\n },\r\n formatoFecha(inputDate: string) {\r\n const fecha = new Date(inputDate);\r\n const dia = String(fecha.getDate()).padStart(2, '0');\r\n const mes = String(fecha.getMonth() + 1).padStart(2, '0');\r\n const anio = fecha.getFullYear();\r\n return `${dia}-${mes}-${anio}`;\r\n },\r\n};\r\n","import type { Cliente, Core } from \"@/servicios/api\";\r\nimport type { ToRefs } from \"vue\";\r\nimport { toRefs, reactive } from \"vue\";\r\n\r\nexport function mapear( //nosonar\r\n esOrigen: Cliente.Cliente.EstudioSocioeconomico | Cliente.Cliente.ObligadoSolidario,\r\n esDestino: ToRefs<Cliente.Cliente.EstudioSocioeconomico | Cliente.Cliente.ObligadoSolidario>\r\n) {\r\n const ks = Object.keys(esOrigen);\r\n\r\n for (const k of ks) {\r\n if (k in esDestino && !/^fecha.+/g.test(k)) (esDestino as any)[k].value = (esOrigen as any)[k];\r\n }\r\n\r\n for (const fecha of ks.filter((k) => /^fecha.+/g.test(k))) {\r\n if (fecha in esDestino) {\r\n const v = (esOrigen as any)[fecha] as string;\r\n if ((v ?? \"\").length) (esDestino as any)[fecha].value = v.substring(0, 10);\r\n }\r\n }\r\n}\r\n\r\nexport function limpiarFechas(es: ToRefs<Cliente.Cliente.EstudioSocioeconomico | Cliente.Cliente.ObligadoSolidario>) {\r\n if (es.fechaNacimiento?.value == \"\") es.fechaNacimiento.value = undefined;\r\n if ((es as ToRefs<Cliente.Cliente.EstudioSocioeconomico>).fechaNacimientoConyuge) {\r\n const esES = es as ToRefs<Cliente.Cliente.EstudioSocioeconomico>;\r\n if (esES.fechaNacimientoConyuge?.value == \"\") esES.fechaNacimientoConyuge.value = undefined;\r\n if (esES.fechaNacimientoGaranteHipotecario?.value == \"\") esES.fechaNacimientoGaranteHipotecario.value = undefined;\r\n if (esES.fechaNacimientoVendedor?.value == \"\") esES.fechaNacimientoVendedor.value = undefined;\r\n }\r\n}\r\n\r\nexport interface IngresoGeneral {\r\n monto: number;\r\n concepto: string;\r\n esSocio: boolean | undefined;\r\n}\r\n\r\nexport interface IngresoNomina {\r\n empresa: string;\r\n actividad: string;\r\n telefono: string;\r\n extension: string;\r\n correo: string;\r\n puesto: string;\r\n otroPuesto: string;\r\n antiguedad: number;\r\n nombreJefe: string;\r\n telefonoJefe: string;\r\n extensionJefe: string;\r\n sueldoBruto: number;\r\n isrImss: number;\r\n sueldoNeto: number;\r\n}\r\n\r\nexport interface DocumentoComprobacionIngresos {\r\n nombre: string;\r\n requerido: boolean;\r\n}\r\n\r\nexport interface ClienteDocumentos {\r\n documentos: Core.Models.EstudioSocioeconomicoDocumento[];\r\n documentosOS: Core.Models.EstudioSocioeconomicoDocumento[][];\r\n documentosConyuge: Core.Models.EstudioSocioeconomicoDocumento[];\r\n documentosCotitular: Core.Models.EstudioSocioeconomicoDocumento[][];\r\n documentosVendedor: Core.Models.EstudioSocioeconomicoDocumento[];\r\n documentosGaranteHipotecario: Core.Models.EstudioSocioeconomicoDocumento[];\r\n documentosConyugeVendedor: Core.Models.EstudioSocioeconomicoDocumento[];\r\n}\r\n\r\nexport interface ClienteDocumentos2 extends ClienteDocumentos {\r\n nombreCompleto: string;\r\n estudioSocioeconomicoId: number;\r\n estudioSocioeconomicoBloqueado: boolean;\r\n autorizacionConsultaBuroCredito: boolean;\r\n llavesObligadoSolidario: string[];\r\n llavesCotitular: string[];\r\n llavesGaranteHipotecario: string[];\r\n llaveActual: string;\r\n headerActual: string;\r\n}\r\n\r\nexport function generarObjetoIngresos() {\r\n return toRefs(\r\n reactive({\r\n cantidadNomina: 0,\r\n nomina: [] as IngresoNomina[],\r\n numeroNominaActual: 0,\r\n cantidadNegocioPropio: 0,\r\n negocioPropio: [] as IngresoGeneral[],\r\n cantidadActividadEmpresarial: 0,\r\n actividadEmpresarial: [] as IngresoGeneral[],\r\n cantidadPension: 0,\r\n pension: [] as IngresoGeneral[],\r\n cantidadArrendamiento: 0,\r\n arrendamiento: [] as IngresoGeneral[],\r\n cantidadConcesion: 0,\r\n concesion: [] as IngresoGeneral[],\r\n cantidadOtro: 0,\r\n otro: [] as IngresoGeneral[],\r\n sumaTotal: 0,\r\n sueldoNetoTotal: 0,\r\n documentosNomina: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosActividadEmpresarial: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosPension: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosNegocioPropio: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosArrendamiento: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosConcesion: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosOtro: undefined as DocumentoComprobacionIngresos[] | undefined\r\n })\r\n );\r\n}\r\n\r\nexport type ComprobacionIngresos = ReturnType<typeof generarObjetoIngresos>;\r\n\r\nexport function asignarIngresos(ingresos: string | undefined, esComprobacionIngresos: ComprobacionIngresos) {\r\n if (!(ingresos ?? \"\").length) return;\r\n try {\r\n const ing = JSON.parse(ingresos!) as string[];\r\n const ingresosGuardados = ing.map((elem) => JSON.parse(elem) as (IngresoNomina | IngresoGeneral)[]);\r\n esComprobacionIngresos.cantidadNomina.value = (ingresosGuardados[0] as IngresoNomina[]).length;\r\n esComprobacionIngresos.nomina.value = ingresosGuardados[0] as IngresoNomina[];\r\n esComprobacionIngresos.cantidadNegocioPropio.value = ingresosGuardados[1].length;\r\n esComprobacionIngresos.negocioPropio.value = ingresosGuardados[1] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadPension.value = ingresosGuardados[2].length;\r\n esComprobacionIngresos.pension.value = ingresosGuardados[2] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadActividadEmpresarial.value = ingresosGuardados[3].length;\r\n esComprobacionIngresos.actividadEmpresarial.value = ingresosGuardados[3] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadArrendamiento.value = ingresosGuardados[4].length;\r\n esComprobacionIngresos.arrendamiento.value = ingresosGuardados[4] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadConcesion.value = ingresosGuardados[5].length;\r\n esComprobacionIngresos.concesion.value = ingresosGuardados[5] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadOtro.value = ingresosGuardados[6].length;\r\n esComprobacionIngresos.otro.value = ingresosGuardados[6] as IngresoGeneral[];\r\n } catch {\r\n /* Prevenir detener funcionamiento por formato de guardado de ingresos antiguo */\r\n }\r\n}\r\n\r\nexport interface EstudioSocioeconomico extends Cliente.Cliente.EstudioSocioeconomico {\r\n estudioSocioeconomicoId: string;\r\n ocupacionActualArray: number[];\r\n}\r\n\r\nexport interface EstudioSocioeconomicoObligadoSolidario extends Cliente.Cliente.ObligadoSolidario {\r\n ocupacionActualArray: number[];\r\n}\r\n","export interface DocumentoComprobacionIngresos {\r\n nombre: string;\r\n requerido: boolean;\r\n}\r\n\r\nexport interface IngresoGeneral {\r\n monto: number;\r\n concepto: string;\r\n esSocio: boolean | undefined;\r\n}\r\n\r\nexport interface IngresoNomina {\r\n empresa: string;\r\n actividad: string;\r\n telefono: string;\r\n extension: string;\r\n correo: string;\r\n puesto: string;\r\n otroPuesto: string;\r\n antiguedad: number;\r\n nombreJefe: string;\r\n telefonoJefe: string;\r\n extensionJefe: string;\r\n sueldoBruto: number;\r\n isrImss: number;\r\n sueldoNeto: number;\r\n}\r\n\r\nexport function generarComprobacionIngresos() {\r\n return {\r\n cantidadNomina: 0,\r\n nomina: [] as IngresoNomina[],\r\n numeroNominaActual: 0,\r\n cantidadNegocioPropio: 0,\r\n negocioPropio: [] as IngresoGeneral[],\r\n cantidadActividadEmpresarial: 0,\r\n actividadEmpresarial: [] as IngresoGeneral[],\r\n cantidadPension: 0,\r\n pension: [] as IngresoGeneral[],\r\n cantidadArrendamiento: 0,\r\n arrendamiento: [] as IngresoGeneral[],\r\n cantidadConcesion: 0,\r\n concesion: [] as IngresoGeneral[],\r\n cantidadOtro: 0,\r\n otro: [] as IngresoGeneral[],\r\n sumaTotal: 0,\r\n sueldoNetoTotal: 0,\r\n documentosNomina: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosActividadEmpresarial: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosPension: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosNegocioPropio: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosArrendamiento: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosConcesion: undefined as DocumentoComprobacionIngresos[] | undefined,\r\n documentosOtro: undefined as DocumentoComprobacionIngresos[] | undefined\r\n };\r\n}\r\n\r\nexport type ComprobacionIngresos = ReturnType<typeof generarComprobacionIngresos>;\r\n","import type { TipoBootstrap } from \"@/interfaces\";\r\nimport type { EstadoRespuesta, Respuesta } from \"@/servicios/api\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nexport interface Toast {\r\n tipo: EstadoRespuesta | TipoBootstrap;\r\n body: string;\r\n delay?: number;\r\n id?: number;\r\n}\r\n\r\nexport const useStore = defineStore(\"base\", {\r\n state: () => ({\r\n toasts: [] as Toast[]\r\n }),\r\n actions: {\r\n agregarToast(toast: Toast | Respuesta) {\r\n if (\"estado\" in toast)\r\n toast = {\r\n body: toast.mensaje,\r\n tipo: toast.estado\r\n } as Toast;\r\n toast.id = Math.random();\r\n if (!toast.delay) toast.delay = 5000;\r\n this.toasts.push(toast);\r\n },\r\n removerToast(toastId: number) {\r\n const i = this.toasts.findIndex(t => t.id == toastId);\r\n if (i >= 0) this.toasts.splice(i, 1);\r\n }\r\n }\r\n});\r\n","<template lang=\"pug\">\r\ndiv\r\n div(style=\"background-color: #f3f1ee\"): .container(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.pt-4\r\n .col-md-6: .card: .card-body\r\n .row\r\n .col-6\r\n b.form-label Nacionalidad:\r\n hir-select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.value.map(a => ({ id: a.paisId, text: (a.gentilicio ?? '').trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomico.paisNacionalidadId.value\"\r\n )\r\n .col-6\r\n b.form-label Fecha\r\n br\r\n span.text-primary.fw-bold {{ fechaActual }}\r\n .col-md-6.col-sm-12: .card: .card-body\r\n .row\r\n .col-4.text-center\r\n b.form-label Ingresos\r\n br\r\n span.text-primary.fw-bold {{ filtroDivisa(utilidades.ifNaN(estudioSocioeconomico.sueldoNominalNeto.value)) }}\r\n .col-4.text-center\r\n b.form-label Egresos\r\n br\r\n span.text-primary.fw-bold {{ filtroDivisa(estudioSocioeconomicoTotalEgresos) }}\r\n .col-4.text-center\r\n b.form-label Remanente\r\n br\r\n span.text-primary.fw-bold {{ filtroDivisa(utilidades.ifNaN((estudioSocioeconomico.sueldoNominalNeto.value ?? 0) - estudioSocioeconomicoTotalEgresos)) }}\r\n .row: .col.pt-4.pb-4\r\n .accordion.mb-4.shadow(:id=\"componentId + 'acordion'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'servicioContratar'\") Servicio a Contratar\r\n .accordion-collapse.collapse.show(:id=\"componentId + 'servicioContratar'\" :data-bs-parent=\"'#' + componentId + 'acordion'\"): .accordion-body: .row\r\n .col-md-4\r\n label.form-label Servicio a Contratar (Proyecto)\r\n select.form-select(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.servicioContratar.value\")\r\n option(disabled selected) Seleccione...\r\n option(:value=\"1\") Casa nueva\r\n option(:value=\"2\") Casa usada\r\n option(:value=\"3\") Departamento nuevo\r\n option(:value=\"4\") Departamento usado\r\n option(:value=\"5\") Local comercial\r\n option(:value=\"6\") Terreno\r\n option(:value=\"7\") Remodelar\r\n option(:value=\"8\") Construcción\r\n option(:value=\"9\") Departamento o Casa usado en Condominio\r\n option(:value=\"10\") Departamento o Casa nuevo en Condominio\r\n .col-md-4\r\n label.form-label Destino\r\n select.form-select(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.destino.value\")\r\n option(disabled selected) Seleccione...\r\n option(:value=\"1\") Uso habitacional\r\n option(:value=\"2\") Comercio\r\n .col-md-4\r\n label.form-label Valor del proyecto (En moneda nacional)\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.valorProyecto.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .invalid-feedback Valor del proyecto (En moneda nacional) inválido.\r\n .col-md-4\r\n label.form-label.mt-1 Contratos involucrados\r\n textarea.form-control(:form=\"componentId + 'form'\" row=\"3\" v-model=\"estudioSocioeconomico.contratosInvolucrados.value\")\r\n .invalid-feedback Contratos involucrados invalido.\r\n .col-md-4\r\n label.form-label.mt-1 Procedimiento de Adjudicación\r\n select.form-select(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.procedimientoAdjudicacion.value\")\r\n option(v-for=\"Procedimiento in catalogos.procedimientoAdjudicacion.value\" :value=\"Procedimiento\") {{ Procedimiento.replace(/_/g, \" \") }}\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion2'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'datosCliente'\") Datos del Cliente\r\n .accordion-collapse.collapse(:id=\"componentId + 'datosCliente'\" :data-bs-parent=\"'#' + componentId + 'acordion2'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Nombre:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.nombre.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n readonly\r\n )\r\n .invalid-feedback Nombre invalido.\r\n .col-md-3\r\n label.form-label Apellido Paterno:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.apellidoPaterno.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n readonly\r\n )\r\n .invalid-feedback Apellido Paterno invalido.\r\n .col-md-3\r\n label.form-label Apellido Materno :\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.apellidoMaterno.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n readonly\r\n )\r\n .invalid-feedback Apellido Materno invalido.\r\n .col-md-3\r\n label.form-label Fecha de nacimiento:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.fechaNacimiento.value\"\r\n type=\"date\"\r\n readonly\r\n min=\"1900-01-01\"\r\n :max=\"fechaIso\"\r\n )\r\n .invalid-feedback Fecha de nacimiento invalido.\r\n .row\r\n .col-md-3\r\n label.form-label RFC:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.rfc.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][a-zA-Z,0-9]?[a-zA-Z,0-9]?[0-9,a-zA-Z]?\"\r\n readonly\r\n )\r\n .invalid-feedback RFC invalido.\r\n .col-md-3\r\n label.form-label Calle:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.calle.value\" type=\"text\" readonly)\r\n .col-md-3\r\n label.form-label No. Exterior / Interior:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.noExterior.value\" type=\"text\" readonly)\r\n .col-md-3\r\n label.form-label C.P.:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.codigoPostal.value\" type=\"text\" pattern=\"[0-9]{5}\" readonly)\r\n .invalid-feedback Colocar un código postal valido.\r\n .row\r\n .col-md-3\r\n label.form-label Colonia:\r\n select.form-select(\r\n v-model=\"estudioSocioeconomico.coloniaId.value\"\r\n :disabled=\"Boolean(!catalogos.colonias.value.length || estudioSocioeconomicoOriginal.coloniaId)\"\r\n )\r\n option(v-for=\"colonia in catalogos.colonias.value\" :value=\"colonia.coloniaId\") {{ colonia.colonia }}\r\n .col-md-3\r\n label.form-label Municipio / AlcaldÃa:\r\n input.form-control(type=\"text\" readonly :value=\"(catalogos.colonias.value[0] || {}).ciudad\")\r\n .col-md-3\r\n label.form-label Estado:\r\n input.form-control(readonly :value=\"(catalogos.colonias.value[0] || {}).estado\")\r\n .col-md-3\r\n label.form-label Tel. Particular:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.telefonoParticular.value\"\r\n type=\"tel\"\r\n pattern=\"^[0-9]{10}\"\r\n :readonly=\"(estudioSocioeconomicoOriginal.telefonoParticular || '') != ''\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .row\r\n .col-md-3\r\n label.form-label Tel. Celular:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.telefonoCelular.value\"\r\n type=\"tel\"\r\n pattern=\"^[0-9]{10}\"\r\n :readonly=\"(estudioSocioeconomicoOriginal.telefonoCelular || '') != ''\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Correo Electrónico Particular:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.emailParticular.value\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n :readonly=\"(estudioSocioeconomicoOriginal.emailParticular || '') != ''\"\r\n )\r\n .invalid-feedback Correo Electrónico Particular invalido.\r\n .col-md-6\r\n label.form-label Medio preferido de contacto:\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" value=\"0\" v-model=\"medioPreferidoContactoJSON\")\r\n label.form-check-label Whatsapp\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" value=\"1\" v-model=\"medioPreferidoContactoJSON\")\r\n label.form-check-label Teléfono\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" value=\"2\" v-model=\"medioPreferidoContactoJSON\" checked)\r\n label.form-check-label Celular\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" value=\"3\" v-model=\"medioPreferidoContactoJSON\")\r\n label.form-check-label Correo electrónico\r\n .row\r\n .col-md-3\r\n label.form-label Estado Civil:\r\n select.form-select(v-model=\"estudioSocioeconomico.estadoCivil.value\")\r\n option(v-for=\"estado in catalogos.estadoCivil.value\" :value=\"estado\") {{ estado.replace(/_/g, \" \") }}\r\n .col-md-3\r\n label.form-label Regimen Matrimonial:\r\n select.form-select(v-model=\"estudioSocioeconomico.regimenMatrimonial.value\" :disabled=\"ActivarDesactivarRegimenMatrimonial\")\r\n option(v-for=\"regimen in catalogos.regimenMatrimonial.value\" :value=\"regimen\") {{ regimen.replace(/_/g, \" \") }}\r\n //- .col-md-3\r\n label.form-label Nombre del Cónyuge:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.nombreConyuge\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .invalid-feedback Nombre del Cónyuge invalido.\r\n .col-md-3(v-if=\"mostrarOcultarDatosConyuge\")\r\n label.form-label ¿Trabaja su Cónyuge?\r\n div\r\n .form-check.form-check-inline\r\n input.form-check-input(:id=\"componentId + 'SiTrabaja'\" type=\"radio\" v-model=\"estudioSocioeconomico.trabajaConyuge.value\" :value=\"true\")\r\n label.form-check-label(:for=\"componentId + 'SiTrabaja'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(:id=\"componentId + 'NoTrabaja'\" type=\"radio\" v-model=\"estudioSocioeconomico.trabajaConyuge.value\" :value=\"false\")\r\n label.form-check-label(:for=\"componentId + 'NoTrabaja'\") No\r\n //- .col-md-3\r\n label.form-label Fecha de Nacimiento del Cónyuge:\r\n input.form-control(v-model=\"estudioSocioeconomico.fechaNacimientoConyuge\" type=\"date\" min=\"1900-01-01\" :max=\"fechaIso\")\r\n .invalid-feedback Fecha de Nacimiento del Cónyuge invalido.\r\n .col-md-3\r\n label.form-label Dependientes Económicos:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.dependientesEconomicos.value\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"99\"\r\n step=\"1\"\r\n )\r\n .invalid-feedback Dependientes Económicos invalido.\r\n .col-md-3\r\n label.form-label ¿Cliente radica en extranjero?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoRadicaExtranjero'\"\r\n :id=\"componentId + 'TipoRadicaExtranjero0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.clienteRadicaExtranjero.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoRadicaExtranjero0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoRadicaExtranjero'\"\r\n :id=\"componentId + 'TipoRadicaExtranjero1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.clienteRadicaExtranjero.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoRadicaExtranjero1'\") No\r\n .col-md-3\r\n label.form-label ¿Tiene doble nacionalidad?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoDobleNacionalidad'\"\r\n :id=\"componentId + 'TipoDobleNacionalidad0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.clienteDobleNacionalidad.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoDobleNacionalidad0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoDobleNacionalidad'\"\r\n :id=\"componentId + 'TipoDobleNacionalidad1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.clienteDobleNacionalidad.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoDobleNacionalidad1'\") No\r\n .col-md-3\r\n label.form-label ¿Ingresos vienen de extranjero?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoIngresosExtranjero'\"\r\n :id=\"componentId + 'TipoIngresosExtranjero0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.ingresosExtranjeros.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoIngresosExtranjero0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoIngresosExtranjero'\"\r\n :id=\"componentId + 'TipoIngresosExtranjero1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.ingresosExtranjeros.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoIngresosExtranjero1'\") No\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n //- .col-md-3\r\n label.form-label Nacionalidad del Cónyuge:\r\n select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.map((a) => ({ id: a.paisId, text: a.gentilicio.trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomico.paisNacionalidadIdConyuge\"\r\n )\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion4'\" v-if=\"mostrarOcultarDatosConyuge\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'DatosConyuge'\") Datos del Cónyuge\r\n .accordion-collapse.collapse(:id=\"componentId + 'DatosConyuge'\" :data-bs-parent=\"'#' + componentId + 'acordion4'\"): .accordion-body\r\n .row\r\n .col-md-4\r\n label.form-label Nombre del Cónyuge:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.nombreConyuge.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Nombre del Cónyuge invalido.\r\n .col-md-4\r\n label.form-label Nacionalidad del Cónyuge:\r\n hir-select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.value.map(a => ({ id: a.paisId, text: (a.gentilicio ?? '').trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomico.paisNacionalidadIdConyuge.value\"\r\n )\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label Actividad del Cónyuge:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.actividadConyuge.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n //- select.form-select(v-model=\"estudioSocioeconomico.actividadConyuge\")\r\n option Asalariado\r\n option No asalariado\r\n option Profesionista independiente\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label Total de Ingresos del Cónyuge:\r\n //- input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.totalIngresosConyuge\" type=\"text\" pattern=\"^[0-9]+([.][0-9]+)?\")\r\n .invalid-feedback Ingreso invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.totalIngresosConyuge.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label Giro de la Empresa del Cónyuge:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.giroConyuge.value\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n //- select.form-select(v-model=\"estudioSocioeconomico.giroConyuge\")\r\n option Alimentos\r\n option Automotriz\r\n option Financiera\r\n option Informática\r\n option Otro\r\n //- .col-md-4\r\n label.form-label RFC del Cónyuge:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.rfcConyuge\"\r\n type=\"text\"\r\n pattern=\"[a-zA-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][a-zA-Z,0-9]?[a-zA-Z,0-9]?[0-9,a-zA-Z]?\"\r\n )\r\n .invalid-feedback RFC del Cónyuge invalido.\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label Antigüedad Laboral del Cónyuge (Meses):\r\n input.form-control(\r\n type=\"number\"\r\n v-model=\"estudioSocioeconomico.antiguedadLaboralConyuge.value\"\r\n pattern=\"^[0-9]{1,2}\"\r\n min=\"0\"\r\n max=\"99\"\r\n step=\"1any\"\r\n )\r\n .invalid-feedback Antigüedad Laboral del Cónyuge (Meses) invalida.\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label RFC del Cónyuge:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.rfcConyuge.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][a-zA-Z,0-9]?[a-zA-Z,0-9]?[0-9,a-zA-Z]?\"\r\n )\r\n .invalid-feedback RFC invalido.\r\n .col-md-4(v-if=\"estudioSocioeconomico.trabajaConyuge\")\r\n label.form-label Fecha de Nacimiento del Conyuge:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.fechaNacimientoConyuge.value\"\r\n type=\"date\"\r\n min=\"1900-01-01\"\r\n :max=\"fechaIso\"\r\n )\r\n .invalid-feedback Fecha de nacimiento inválida.\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n informacion-laboral(\r\n :estudio-socioeconomico=\"estudioSocioeconomico\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :comp-id=\"componentId\"\r\n :catalogos=\"catalogos\"\r\n @guardar=\"guardarEstudioSocioeconomico()\"\r\n )\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionPatromonio'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'Patrimonio'\") Patrimonio\r\n .accordion-collapse.collapse(:id=\"componentId + 'Patrimonio'\" :data-bs-parent=\"'#' + componentId + 'acordionPatromonio'\"): .accordion-body\r\n .row\r\n .col-md-5\r\n label.form-label Inmuebles Descripción\r\n textarea.form-control(row=\"3\" v-model=\"estudioSocioeconomico.inmuebleDescripcion.value\")\r\n .col-md-4\r\n label.form-label Inmuebles Valor Aproximado\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.inmuebleValorAprox.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label ¿Inmueble Esta Gravado?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoInmuebleGravado'\"\r\n :id=\"componentId + 'TipoInmuebleGravado0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.inmuebleGravado.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoInmuebleGravado0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoInmuebleGravado'\"\r\n :id=\"componentId + 'TipoInmuebleGravado1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.inmuebleGravado.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoInmuebleGravado1'\") No\r\n .col-md-5\r\n label.form-label Automoviles Descripción\r\n textarea.form-control(row=\"3\" v-model=\"estudioSocioeconomico.automovilDescripcion.value\")\r\n .col-md-4\r\n label.form-label Automoviles Valor Aproximado\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.automovilValorAprox.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Automoviles Esta Gravado?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoAutomovilGravado'\"\r\n :id=\"componentId + 'TipoAutomovilGravado0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.automovilGravado.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoAutomovilGravado0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoAutomovilGravado'\"\r\n :id=\"componentId + 'TipoAutomovilGravado1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.automovilGravado.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoAutomovilGravado1'\") No\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion6'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'gastos'\") Gastos (En moneda nacional)\r\n .accordion-collapse.collapse(:id=\"componentId + 'gastos'\" :data-bs-parent=\"'#' + componentId + 'acordion6'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Pago Mensual de Créditos:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.pagoMensualCreditos\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.pagoMensualCreditos.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .invalid-feedback Pago Mensual de Créditos invalido.\r\n .col-md-3\r\n label.form-label Tarjeta de Crédito:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.tarjetaCredito\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.tarjetaCredito.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Renta:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.renta\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.renta.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Colegiaturas:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.colegiaturas\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.colegiaturas.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .row\r\n .col-md-3\r\n label.form-label Gasto Familiar:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.gastoFamiliar\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.gastoFamiliar.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Otros Egresos:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.otrosEgresos\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.otrosEgresos.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Cuotas (pagos) a Hir Casa\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n v-model=\"estudioSocioeconomico.cuotas.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Total Egresos:\r\n //- input.form-control(v-model=\"estudioSocioeconomicoTotalEgresos\" readonly)\r\n hir-autonumeric.form-control(\r\n :form=\"formId\"\r\n readonly\r\n v-model=\"estudioSocioeconomicoTotalEgresos\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label ¿Puede comprobar ingresos?\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoComprobarIngresos'\"\r\n :id=\"componentId + 'TipoComprobarIngresos0'\"\r\n :value=\"true\"\r\n v-model=\"estudioSocioeconomico.comprobarIngresos.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoRadicaExtranjero0'\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoComprobarIngresos'\"\r\n :id=\"componentId + 'TipoComprobarIngresos1'\"\r\n :value=\"false\"\r\n v-model=\"estudioSocioeconomico.comprobarIngresos.value\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoComprobarIngresos1'\") No\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion5'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'viviendaActual'\") Vivienda Actual\r\n .accordion-collapse.collapse(:id=\"componentId + 'viviendaActual'\" :data-bs-parent=\"'#' + componentId + 'acordion5'\"): .accordion-body\r\n .row\r\n .col-md-4\r\n label.form-label Actualmente su Vivienda es:\r\n select.form-select(v-model=\"estudioSocioeconomico.tipoViviendaActual.value\")\r\n option(:value=\"0\") Propio\r\n option(:value=\"2\") Familiar\r\n option(:value=\"3\") Hipotecada\r\n option(:value=\"1\") Rentada\r\n .col-md-4\r\n label.form-label Nombre del Arrendador:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.nombreArrendador.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n :required=\"requeridoViviendaActual\"\r\n )\r\n .invalid-feedback Nombre del Arrendador invalido.\r\n .col-md-4\r\n label.form-label Teléfono del Arrendador:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.telefonoArrendador.value\"\r\n type=\"tel\"\r\n pattern=\"[0-9]{10}\"\r\n :required=\"requeridoViviendaActual\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n //- WIP\r\n //- .accordion.shadow.mb-4(:id=\"this.componentId + 'acordion9'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + this.componentId + 'propiedades'\") Propiedades\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'propiedades'\" :data-bs-parent=\"'#' + this.componentId + 'acordion9'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label ¿Puede comprobar los ingresos que declaró?:\r\n input.form-control(v-model=\"estudioSocioeconomico.pagoMensualCreditos\")\r\n .col-md-3\r\n label.form-label Si posee inmuebles, declárelos aquÃ:\r\n input.form-control(v-model=\"estudioSocioeconomico.tarjetaCredito\")\r\n .col-md-3\r\n label.form-label Valor aproximado de los inmuebles que posee:\r\n input.form-control(v-model=\"estudioSocioeconomico.renta\")\r\n .col-md-3\r\n label.form-label Valor de los inmuebles hipotecados:\r\n input.form-control(v-model=\"estudioSocioeconomico.colegiaturas\")\r\n .row\r\n .col-md-3\r\n label.form-label Si posee automóviles declárelos aquÃ:\r\n input.form-control(v-model=\"estudioSocioeconomico.pagoMensualCreditos\")\r\n .col-md-3\r\n label.form-label Valor apróximado de los automóviles:\r\n input.form-control(v-model=\"estudioSocioeconomico.tarjetaCredito\")\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion7'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'referencias'\") Referencias\r\n .accordion-collapse.collapse(:id=\"componentId + 'referencias'\" :data-bs-parent=\"'#' + componentId + 'acordion7'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Nombre de Referencia Familiar:\r\n input.form-control(v-model=\"estudioSocioeconomico.nombreRefFamiliar.value\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .invalid-feedback Nombre de una Referencia Familiar invalido.\r\n .col-md-3\r\n label.form-label Teléfono de Referencia Familiar:\r\n input.form-control(v-model=\"estudioSocioeconomico.telefonoRefFamiliar.value\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-6\r\n label.form-label Direccion Referencia Familiar:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ#. ]+\"\r\n v-model=\"estudioSocioeconomico.direccionREfFamiliar.value\"\r\n )\r\n .invalid-feedback Dirección Familiar invalida.\r\n .row\r\n .col-md-3\r\n label.form-label Nombre de Referencia Laboral:\r\n input.form-control(v-model=\"estudioSocioeconomico.nombreRefLaboral.value\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .invalid-feedback Nombre de una Referencia invalido.\r\n .col-md-3\r\n label.form-label Teléfono de Referencia Laboral:\r\n input.form-control(v-model=\"estudioSocioeconomico.telefonoRefLaboral.value\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-6\r\n label.form-label Dirección Referencia Laboral:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ#. ]+\"\r\n v-model=\"estudioSocioeconomico.direccionREfLaboral.value\"\r\n )\r\n .invalid-feedback Dirección invalida.\r\n .row\r\n .col-md-3\r\n //-offset-md-2\r\n label.form-label Nombre de Referencia Contacto:\r\n input.form-control(v-model=\"estudioSocioeconomico.nombreRefContacto.value\" type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .invalid-feedback Nombre de una Referencia invalido.\r\n .col-md-3\r\n label.form-label Teléfono de Referencia Contacto:\r\n input.form-control(v-model=\"estudioSocioeconomico.telefonoRefContacto.value\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-6\r\n label.form-label Dirección Referencia Contacto:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ#. ]+\"\r\n v-model=\"estudioSocioeconomico.direccionREfContacto.value\"\r\n )\r\n .invalid-feedback Dirección invalida.\r\n .text-center.mt-4\r\n button.btn.btn-primary.text-light.fw-bold(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionVendedor'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'vendedor'\") Vendedor\r\n .accordion-collapse.collapse(:id=\"componentId + 'vendedor'\" :data-bs-parent=\"'#' + componentId + 'acordionVendedor'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Nombre:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.nombreVendedor.value\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Nombre invalido.\r\n .col-md-3\r\n label.form-label Número de teléfono de celular:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.telefonoVendedor.value\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Número de teléfono partÃcular:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.celularVendedor.value\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Fecha de nacimiento:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.fechaNacimientoVendedor.value\"\r\n type=\"date\"\r\n min=\"1900-01-01\"\r\n :max=\"fechaIso\"\r\n )\r\n .invalid-feedback Fecha de nacimiento inválida.\r\n .row\r\n .col-md-3\r\n label.form-label Estado civil:\r\n select.form-select(v-model=\"estudioSocioeconomico.estadoCivilVendedor.value\")\r\n option(v-for=\"estado in catalogos.estadoCivil.value\" :value=\"estado\") {{ estado.replace(/_/g, \" \") }}\r\n .col-md-3\r\n label.form-label Régimen matrimonial:\r\n select.form-select(v-model=\"estudioSocioeconomico.regimenMatrimonialVendedor.value\" :disabled=\"regimenMatrimonial\")\r\n option(v-for=\"regimen in catalogos.regimenMatrimonial.value\" :value=\"regimen\") {{ regimen.replace(/_/g, \" \") }}\r\n .col-md-3\r\n label.form-label Correo electrónico personal:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.emailVendedor.value\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n )\r\n .invalid-feedback Correo electrónico personal invalido.\r\n .col-md-3\r\n label.form-label Correo electrónico laboral:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.emailLaboralVendedor.value\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n )\r\n .invalid-feedback Correo electrónico laboral invalido.\r\n .row\r\n .col-md-3\r\n b.form-label Nacionalidad:\r\n hir-select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.value.map(a => ({ id: a.paisId, text: (a.gentilicio || '').trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomico.paisNacionalidadIdVendedor.value\"\r\n )\r\n .text-center\r\n button.btn.btn-primary.text-light.fw-bold.mt-4(\r\n type=\"submit\"\r\n :form=\"componentId + 'form'\"\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = false\"\r\n ) Guardar\r\n //- WIP\r\n //- .accordion.shadow.mb-4(:id=\"this.componentId + 'acordion8'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#' + this.componentId + 'informacionAdicional'\"\r\n ) Información Adicional\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'informacionAdicional'\" :data-bs-parent=\"'#' + this.componentId + 'acordion8'\"): .accordion-body\r\n .row\r\n .col-md-4\r\n label.form-label ¿Es Aval u Obligado Solidario en algún Préstamo?:\r\n input.form-control\r\n .col-md-4\r\n label.form-label ¿Se ha Declarado en Moratoria o Suspensión de Pagos alguna vez?\r\n input.form-control\r\n .col-md-4\r\n label.form-label ¿Ha sido alguna vez demandado por Incumplimiento de sus obligaciones financieras?\r\n input.form-control\r\n .row\r\n .col-md-4\r\n label.form-label Nombre del Vendedor:\r\n input.form-control(v-model=\"estudioSocioeconomico.nombreVendedor\")\r\n .col-md-4\r\n label.form-label Teléfono del Vendedor:\r\n input.form-control(v-model=\"estudioSocioeconomico.telefonoVendedor\")\r\n .col-md-4\r\n label.form-label Mail del Vendedor:\r\n input.form-control(v-model=\"estudioSocioeconomico.emailVendedor\")\r\n //-form.text-center(ref=\"form\" novalidate :id=\"componentId + 'form'\"): button.btn.btn-success(@click.prevent=\"guardarEstudioSocioeconomico()\") Guardar\r\n //- .accordion.shadow.mb-4(:id=\"this.componentId + 'acordion9'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + this.componentId + 'proyecto'\") Proyecto\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'proyecto'\" :data-bs-parent=\"'#' + this.componentId + 'acordion9'\"): .accordion-body\r\n .row\r\n .col-md-4\r\n label.form-label Proyecto:\r\n select.form-select(v-model=\"estudioSocioeconomico.proyecto\")\r\n option(disabled select) Seleccione...\r\n option Casa nueva\r\n option Casa usada\r\n option Departamento nuevo\r\n option Departamento usado\r\n option Local comercial\r\n option Terreno\r\n .col-md-4\r\n label.form-label Monto Adjudicado:\r\n input.form-control(v-model=\"estudioSocioeconomico.montoAdjudicado\")\r\n .col-md-4\r\n label.form-label Score BC:\r\n input.form-control(v-model=\"estudioSocioeconomico.scoreBc\")\r\n //- Hipotecario'\") \r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#' + this.componentId + 'GaranteHipotecario'\"\r\n ) Garante Hipotecario\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'GaranteHipotecario'\" :data-bs-parent=\"'#' + this.componentId + 'acordionGaranteHipotecario'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Nombre:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.nombreGaranteHipotecario\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Nombre invalido.\r\n .col-md-3\r\n label.form-label Número de teléfono de celular:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.telefonoGaranteHipotecario\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Número de teléfono de celular invalido.\r\n .col-md-3\r\n label.form-label Número de teléfono partÃcular:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomico.celularGaranteHipotecario\" type=\"tel\" pattern=\"[0-9]{10}\")\r\n .invalid-feedback Número de teléfono partÃcular invalido.\r\n .col-md-3\r\n label.form-label Fecha de nacimiento:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.fechaNacimientoGaranteHipotecario\"\r\n type=\"date\"\r\n min=\"1900-01-01\"\r\n :max=\"fechaIso\"\r\n )\r\n .invalid-feedback Fecha de nacimiento inválida.\r\n .row\r\n .col-md-3\r\n label.form-label Estado civil:\r\n select.form-select(v-model=\"estudioSocioeconomico.estadoCivilGaranteHipotecario\")\r\n option(v-for=\"estado in catalogos.estadoCivil\" :value=\"estado\") {{ estado.replace(/_/g, ' ') }}\r\n .col-md-3\r\n label.form-label Régimen matrimonial:\r\n select.form-select(v-model=\"estudioSocioeconomico.regimenMatrimonialGaranteHipotecario\" :disabled=\"regimenMatrimonialGH\")\r\n option(v-for=\"regimen in catalogos.regimenMatrimonial\" :value=\"regimen\") {{ regimen.replace(/_/g, ' ') }}\r\n .col-md-3\r\n label.form-label Correo electrónico personal:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.emailGaranteHipotecario\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n )\r\n .invalid-feedback Correo electrónico personal invalido.\r\n .col-md-3\r\n label.form-label Correo electrónico laboral:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomico.emailLaboralGaranteHipotecario\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n )\r\n .invalid-feedback Correo electrónico laboral invalido.\r\n .row\r\n .col-md-3\r\n label.form-label Nacionalidad:\r\n select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.map((a) => ({ id: a.paisId, text: a.gentilicio.trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomico.paisNacionalidadIdGaranteHipotecario\"\r\n )\r\n form.text-center(ref=\"form\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"guardarEstudioSocioeconomico()\"): button.btn.btn-success(\r\n v-on:click=\"estudioSocioeconomico.notificacionAscesor.value = true\"\r\n ) Enviar Datos\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport HirAutonumeric from \"@/components/HirAutonumeric.vue\";\r\nimport InformacionLaboral from \"./EstudioSocioeconomico/InformacionLaboral.vue\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { limpiarFechas as limpiarFechasES, mapear as mapearES } from \"../composables/EstudioSocioeconomico\";\r\nimport { generarComprobacionIngresos } from \"../composables/ComprobacionIngresos\";\r\nimport type { IngresoGeneral, IngresoNomina } from \"../composables/ComprobacionIngresos\";\r\nimport { useStore as useClienteClienteStore } from \"../store\";\r\nimport { useStore } from \"@/store\";\r\nimport { useRouter } from \"vue-router\";\r\n\r\nconst filtroDivisa = filtros.filtroDivisa;\r\n\r\nconst form = ref(null as HTMLFormElement | null);\r\nconst store = useClienteClienteStore();\r\nconst $router = useRouter();\r\nconst $store = useStore();\r\n\r\n//#region Data\r\nconst esComprobacionIngresos = toRefs(reactive(generarComprobacionIngresos()));\r\nprovide(\"ComprobacionIngresos\", esComprobacionIngresos);\r\n\r\nconst componentId = utilidades.generarId();\r\nconst formId = componentId + \"form\";\r\nconst fechaActual = new Intl.DateTimeFormat(\"es-MX\", {\r\n day: \"2-digit\",\r\n month: \"2-digit\",\r\n year: \"numeric\"\r\n} as any).format(new Date());\r\nconst fechaIso = new Date().toISOString().substring(0, 10);\r\nconst catalogos = toRefs(\r\n reactive({\r\n estadoCivil: Core.Models.EstadoCivil,\r\n regimenMatrimonial: Core.Models.RegimenMatrimonial,\r\n procedimientoAdjudicacion: Core.Models.ProcedimientoAdjudicacion,\r\n profesiones: [] as Core.Models.Profesion[],\r\n colonias: [] as Cliente.Cliente.ObtenerColoniasBody[],\r\n paises: [] as Core.Models.Pais[]\r\n })\r\n);\r\nconst formularioValidado = ref(false);\r\nconst estudioSocioeconomicoOriginal = {\r\n coloniaId: 0,\r\n telefonoParticular: \"\" as string | undefined,\r\n telefonoCelular: \"\" as string | undefined,\r\n emailParticular: \"\" as string | undefined\r\n};\r\nconst medioPreferidoContactoJSON = ref([] as number[]);\r\nconst reactiveEstudioSocioeconomico = reactive({\r\n estudioSocioeconomicoId: \"\",\r\n clienteId: 0,\r\n servicioContratar: 0,\r\n destino: 0,\r\n valorProyecto: 0,\r\n nombre: \"\",\r\n apellidoPaterno: \"\",\r\n apellidoMaterno: \"\",\r\n fechaNacimiento: undefined as string | undefined,\r\n rfc: \"\",\r\n rfcConyuge: \"\",\r\n calle: \"\",\r\n noExterior: \"\",\r\n codigoPostal: \"\",\r\n coloniaId: 0,\r\n telefonoParticular: \"\" as string | undefined,\r\n telefonoCelular: \"\" as string | undefined,\r\n emailParticular: \"\" as string | undefined,\r\n estadoCivil: Core.Models.EstadoCivil.SOLTERO,\r\n regimenMatrimonial: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n dependientesEconomicos: 0,\r\n nombreConyuge: \"\",\r\n fechaNacimientoConyuge: undefined as string | undefined,\r\n paisNacionalidadIdConyuge: undefined as number | undefined,\r\n profesion: 0 as number | undefined,\r\n ocupacionActual: undefined as string | undefined,\r\n ocupacionActualArray: [] as number[],\r\n laboralOtro: \"\",\r\n empresaLabora: \"\",\r\n actividadEmpresa: \"\",\r\n telefonoEmpresa: \"\",\r\n extensionTelefonicaTrabajo: \"\",\r\n emailTrabajo: \"\",\r\n puestoDesempenia: \"\",\r\n otroPuesto: \"\",\r\n antiguedadLaboralMeses: 0,\r\n nombreJefeInmediato: \"\",\r\n telefonoJefeInmediato: \"\",\r\n extensionJefeInmediato: \"\",\r\n sueldoNominalBruto: 0,\r\n isrImss: 0,\r\n sueldoNominalNeto: 0.0,\r\n honorarios: 0,\r\n gratificaciones: 0,\r\n rentas: 0,\r\n comisiones: 0,\r\n otrosIngresos: 0,\r\n totalIngresos: 0,\r\n totalIngresosConyuge: 0,\r\n actividadConyuge: \"\",\r\n giroConyuge: \"\",\r\n antiguedadLaboralConyuge: 0,\r\n tipoViviendaActual: -1,\r\n nombreArrendador: \"\",\r\n telefonoArrendador: \"\",\r\n pagoMensualCreditos: 0,\r\n tarjetaCredito: 0,\r\n renta: 0,\r\n colegiaturas: 0,\r\n gastoFamiliar: 0,\r\n otrosEgresos: 0,\r\n totalEgresos: 0,\r\n nombreRefFamiliar: undefined as string | undefined,\r\n telefonoRefFamiliar: \"\",\r\n nombreRefLaboral: \"\",\r\n telefonoRefLaboral: \"\",\r\n nombreRefContacto: \"\",\r\n telefonoRefContacto: \"\",\r\n esAvalObligadoSolidario: false,\r\n esDeclaradoMoratoriaSuspensionPagos: false,\r\n esDemandadoIncumplimientoObligacionesFinancieras: false,\r\n nombreVendedor: \"\",\r\n telefonoVendedor: \"\",\r\n celularVendedor: \"\",\r\n emailVendedor: \"\",\r\n emailLaboralVendedor: \"\",\r\n fechaNacimientoVendedor: undefined as string | undefined,\r\n estadoCivilVendedor: undefined as Core.Models.EstadoCivil | undefined,\r\n regimenMatrimonialVendedor: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n paisNacionalidadIdVendedor: undefined as number | undefined,\r\n proyecto: \"\",\r\n montoAdjudicado: 0,\r\n scoreBC: 0,\r\n medioPreferidoContacto: \"\",\r\n paisNacionalidadId: 0 as number,\r\n nombreGaranteHipotecario: \"\",\r\n telefonoGaranteHipotecario: \"\",\r\n celularGaranteHipotecario: \"\",\r\n fechaNacimientoGaranteHipotecario: undefined as string | undefined,\r\n emailGaranteHipotecario: \"\" as string | undefined,\r\n emailLaboralGaranteHipotecario: \"\" as string | undefined,\r\n estadoCivilGaranteHipotecario: undefined as Core.Models.EstadoCivil | undefined,\r\n regimenMatrimonialGaranteHipotecario: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n paisNacionalidadIdGaranteHipotecario: undefined as number | undefined,\r\n ingresos: \"\",\r\n trabajaConyuge: false,\r\n notificacionAscesor: false,\r\n version: 0,\r\n contratosInvolucrados: undefined as string | undefined,\r\n procedimientoAdjudicacion: undefined as Core.Models.ProcedimientoAdjudicacion | undefined,\r\n cuotas: undefined as number | undefined,\r\n comprobarIngresos: undefined as boolean | undefined,\r\n direccionREfFamiliar: undefined as string | undefined,\r\n direccionREfLaboral: undefined as string | undefined,\r\n direccionREfContacto: undefined as string | undefined,\r\n clienteRadicaExtranjero: undefined as boolean | undefined,\r\n clienteDobleNacionalidad: undefined as boolean | undefined,\r\n ingresosExtranjeros: undefined as boolean | undefined,\r\n inmuebleDescripcion: undefined as string | undefined,\r\n inmuebleValorAprox: undefined as number | undefined,\r\n inmuebleGravado: undefined as boolean | undefined,\r\n automovilDescripcion: undefined as string | undefined,\r\n automovilValorAprox: undefined as number | undefined,\r\n automovilGravado: undefined as boolean | undefined\r\n});\r\nconst estudioSocioeconomico = toRefs(reactiveEstudioSocioeconomico);\r\nlet esCargado = false;\r\n//#endregion\r\n\r\n//#region Computed\r\nconst estudioSocioeconomicoTotalIngresos = computed((): number => {\r\n let es = estudioSocioeconomico;\r\n return (\r\n (es.honorarios.value ?? 0) +\r\n (es.gratificaciones.value ?? 0) +\r\n (es.rentas.value ?? 0) +\r\n (es.comisiones.value ?? 0) +\r\n (es.otrosIngresos.value ?? 0) +\r\n (es.sueldoNominalNeto.value ?? 0)\r\n );\r\n});\r\nconst estudioSocioeconomicoTotalEgresos = computed((): number => {\r\n let es = estudioSocioeconomico;\r\n return (\r\n (es.pagoMensualCreditos.value ?? 0) +\r\n (es.tarjetaCredito.value ?? 0) +\r\n (es.renta.value ?? 0) +\r\n (es.colegiaturas.value ?? 0) +\r\n (es.gastoFamiliar.value ?? 0) +\r\n (es.otrosEgresos.value ?? 0) +\r\n (es.cuotas.value ?? 0)\r\n );\r\n});\r\nconst ActivarDesactivarRegimenMatrimonial = computed((): boolean => {\r\n let es = estudioSocioeconomico;\r\n if (es.estadoCivil?.value == \"CASADO\") return false;\r\n else {\r\n es.regimenMatrimonial.value = undefined;\r\n return true;\r\n }\r\n});\r\nconst mostrarOcultarDatosConyuge = computed((): boolean => {\r\n let es = estudioSocioeconomico;\r\n if (es.estadoCivil?.value == \"CASADO\") {\r\n return true;\r\n } else {\r\n es.regimenMatrimonial.value = undefined;\r\n return false;\r\n }\r\n});\r\nconst requeridoViviendaActual = computed((): boolean => {\r\n let es = estudioSocioeconomico;\r\n if (es.tipoViviendaActual?.value == 1) return true;\r\n else return false;\r\n});\r\nconst regimenMatrimonial = computed((): boolean => {\r\n let es = estudioSocioeconomico;\r\n if (es.estadoCivilVendedor?.value == \"CASADO\") return false;\r\n else {\r\n es.regimenMatrimonialVendedor.value = undefined;\r\n return true;\r\n }\r\n});\r\n//#endregion\r\n\r\n//#region Watch\r\nwatch(\r\n estudioSocioeconomico.codigoPostal,\r\n _.debounce(val => {\r\n if (val) api.Cliente.Cliente.EscrituracionApi.ObtenerColonias(val).then(v => (catalogos.colonias.value = v.data));\r\n else catalogos.colonias.value = [];\r\n }, 300)\r\n);\r\n\r\nwatch(\r\n Object.values(esComprobacionIngresos),\r\n () => {\r\n if (esCargado) calcularIngresos();\r\n },\r\n { deep: true }\r\n);\r\n//#endregion\r\n\r\n//#region Methods\r\nasync function guardarEstudioSocioeconomico() {\r\n let valido = (form.value as HTMLFormElement).checkValidity();\r\n estudioSocioeconomico.medioPreferidoContacto.value = medioPreferidoContactoJSON.value.join(\",\");\r\n formularioValidado.value = true;\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n if (estudioSocioeconomico.notificacionAscesor) {\r\n Swal.fire({\r\n title: \"<p class='text-primary fw-bold'>Tus datos serán enviados.</p>\",\r\n html: \"Gracias por enviar los datos de tu estudio socioeconómico, por favor envÃa un correo a tu asesor para notificarlo del cierre y continuar con la revisión y posterior emisión de los documentos necesarios en el trámite.<b/>\",\r\n icon: \"warning\",\r\n showCancelButton: true,\r\n customClass: {\r\n confirmButton: \"btn btn-primary text-white fw-bold\",\r\n cancelButton: \"btn text-white\"\r\n },\r\n confirmButtonText: \"Aceptar\",\r\n cancelButtonText: \"Cancelar\"\r\n }).then(async (result: any) => {\r\n if (result.isConfirmed) {\r\n await enviarEstudioSocioEconomico();\r\n }\r\n });\r\n } else {\r\n await enviarEstudioSocioEconomico();\r\n }\r\n}\r\n\r\nfunction calcularIngresos() {\r\n let es = estudioSocioeconomico;\r\n let ci = esComprobacionIngresos;\r\n let aIngresos: string[] = [];\r\n verficarConceptos(ci.nomina.value, 1, ci.cantidadNomina.value, aIngresos);\r\n verficarConceptos(ci.negocioPropio.value, 2, ci.cantidadNegocioPropio.value, aIngresos);\r\n verficarConceptos(ci.pension.value, 3, ci.cantidadPension.value, aIngresos);\r\n verficarConceptos(ci.actividadEmpresarial.value, 4, ci.cantidadActividadEmpresarial.value, aIngresos);\r\n verficarConceptos(ci.arrendamiento.value, 5, ci.cantidadArrendamiento.value, aIngresos);\r\n verficarConceptos(ci.concesion.value, 6, ci.cantidadConcesion.value, aIngresos);\r\n verficarConceptos(ci.otro.value, 7, ci.cantidadOtro.value, aIngresos);\r\n es.ingresos.value = JSON.stringify(aIngresos);\r\n /*Sumatoria de Conceptos*/\r\n sumarTodosConceptos();\r\n}\r\n\r\nfunction limpiarIngresos() {\r\n for (let nomina of esComprobacionIngresos.nomina.value) {\r\n nomina.empresa = utilidades.limpiarString(nomina.empresa);\r\n nomina.telefono = utilidades.limpiarString(nomina.telefono);\r\n nomina.extension = utilidades.limpiarString(nomina.extension);\r\n nomina.correo = utilidades.limpiarString(nomina.correo);\r\n nomina.puesto = utilidades.limpiarString(nomina.puesto);\r\n nomina.otroPuesto = utilidades.limpiarString(nomina.otroPuesto);\r\n nomina.nombreJefe = utilidades.limpiarString(nomina.nombreJefe);\r\n nomina.telefonoJefe = utilidades.limpiarString(nomina.telefonoJefe);\r\n nomina.extensionJefe = utilidades.limpiarString(nomina.extensionJefe);\r\n nomina.actividad = utilidades.limpiarString(nomina.actividad);\r\n }\r\n for (let ingresoGeneral of [\r\n esComprobacionIngresos.actividadEmpresarial.value,\r\n esComprobacionIngresos.arrendamiento.value,\r\n esComprobacionIngresos.concesion.value,\r\n esComprobacionIngresos.negocioPropio.value,\r\n esComprobacionIngresos.otro.value,\r\n esComprobacionIngresos.pension.value\r\n ])\r\n for (let general of ingresoGeneral) {\r\n general.concepto = utilidades.limpiarString(general.concepto);\r\n }\r\n}\r\n\r\nasync function enviarEstudioSocioEconomico() {\r\n let es = estudioSocioeconomico;\r\n es.estudioSocioeconomicoId.value ??= $router.currentRoute.value.query[\"estudioId\"] as string;\r\n es.totalIngresos.value = estudioSocioeconomicoTotalIngresos.value;\r\n es.totalEgresos.value = estudioSocioeconomicoTotalEgresos.value;\r\n //-Modifcaciones para obtener sumar conceptos y nominas\r\n //-this.sumarDatos(this.esComprobacionIngresos.actividadEmpresarial);\r\n /*JCreacion de Array JSON Estructurado de Ingresos*/\r\n limpiarIngresos();\r\n calcularIngresos();\r\n /*Accciones para Guardar Datos*/\r\n es.ocupacionActual.value = (es.ocupacionActualArray.value ?? []).join(\",\");\r\n limpiarFechasES(estudioSocioeconomico);\r\n let estudio = toRaw(reactiveEstudioSocioeconomico) as Cliente.Cliente.EstudioSocioeconomico;\r\n let r = await api.Cliente.Cliente.EscrituracionApi.GuardarEstudioSocioeconomico(estudio);\r\n $store.agregarToast({ tipo: r.data.estado, body: r.data.mensaje! });\r\n}\r\n\r\nfunction sumarDatos(value: IngresoGeneral[]): number {\r\n if (!value) return 0;\r\n let suma = 0;\r\n suma = value.reduce((prev: number, curr: any) => prev + curr.monto, 0);\r\n return Number(suma);\r\n}\r\n\r\nfunction sumarTodosConceptos() {\r\n estudioSocioeconomico.dependientesEconomicos.value = Number.parseInt(\r\n (estudioSocioeconomico.dependientesEconomicos.value ?? \"0\").toString()\r\n );\r\n estudioSocioeconomico.antiguedadLaboralConyuge.value = Number.parseInt(\r\n (estudioSocioeconomico.antiguedadLaboralConyuge.value ?? \"0\").toString()\r\n );\r\n estudioSocioeconomico.rentas.value = sumarDatos(esComprobacionIngresos.arrendamiento.value);\r\n estudioSocioeconomico.otrosIngresos.value = sumarDatos(esComprobacionIngresos.otro.value);\r\n estudioSocioeconomico.comisiones.value = sumarDatos(esComprobacionIngresos.concesion.value);\r\n estudioSocioeconomico.sueldoNominalNeto.value =\r\n (esComprobacionIngresos.sueldoNetoTotal?.value ?? 0) +\r\n sumarDatos(esComprobacionIngresos.pension?.value) +\r\n sumarDatos(esComprobacionIngresos.negocioPropio?.value) +\r\n sumarDatos(esComprobacionIngresos.actividadEmpresarial?.value) +\r\n estudioSocioeconomico.rentas.value +\r\n estudioSocioeconomico.otrosIngresos.value +\r\n estudioSocioeconomico.comisiones.value;\r\n}\r\n\r\nfunction verficarConceptos(\r\n arrayAdd: (IngresoNomina | IngresoGeneral)[],\r\n valueCurrent: number,\r\n cantidadCurrent: number,\r\n aIngresos: string[]\r\n): void {\r\n if (estudioSocioeconomico.ocupacionActualArray.value.includes(valueCurrent)) {\r\n let arregloLimpio = [];\r\n for (let i = 0; i < cantidadCurrent; i++) {\r\n arregloLimpio.push(arrayAdd[i]);\r\n }\r\n aIngresos.push(JSON.stringify(arregloLimpio));\r\n } else {\r\n arrayAdd = [];\r\n aIngresos.push(JSON.stringify(arrayAdd));\r\n }\r\n}\r\n//#endregion\r\n\r\nonMounted(async () => {\r\n store.titulo = \"Estudio Socioeconómico\";\r\n catalogos.profesiones.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerProfesiones()).data;\r\n catalogos.paises.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerPaises()).data;\r\n\r\n let cliente = $router.currentRoute.value.query[\"estudioId\"] as string;\r\n if (cliente == undefined) cliente = \"0\";\r\n\r\n let d = await api.Cliente.Cliente.EscrituracionApi.ObtenerDatosCliente(cliente, false);\r\n formularioValidado.value = true;\r\n mapearES(d.data, estudioSocioeconomico);\r\n estudioSocioeconomico.ocupacionActualArray.value = [];\r\n //- SEGUROS S4Q4 2021\r\n estudioSocioeconomico.contratosInvolucrados.value = d.data.contratosInvolucrados;\r\n estudioSocioeconomico.procedimientoAdjudicacion.value = d.data.procedimientoAdjudicacion;\r\n estudioSocioeconomico.cuotas.value = d.data.cuotas;\r\n estudioSocioeconomico.comprobarIngresos.value = d.data.comprobarIngresos;\r\n estudioSocioeconomico.direccionREfFamiliar.value = d.data.direccionREfFamiliar;\r\n estudioSocioeconomico.direccionREfLaboral.value = d.data.direccionREfLaboral;\r\n estudioSocioeconomico.direccionREfContacto.value = d.data.direccionREfContacto;\r\n estudioSocioeconomico.clienteRadicaExtranjero.value = d.data.clienteRadicaExtranjero;\r\n estudioSocioeconomico.clienteDobleNacionalidad.value = d.data.clienteDobleNacionalidad;\r\n estudioSocioeconomico.ingresosExtranjeros.value = d.data.ingresosExtranjeros;\r\n estudioSocioeconomico.inmuebleDescripcion.value = d.data.inmuebleDescripcion;\r\n estudioSocioeconomico.inmuebleValorAprox.value = d.data.inmuebleValorAprox;\r\n estudioSocioeconomico.inmuebleGravado.value = d.data.inmuebleGravado;\r\n estudioSocioeconomico.automovilDescripcion.value = d.data.automovilDescripcion;\r\n estudioSocioeconomico.automovilValorAprox.value = d.data.automovilValorAprox;\r\n estudioSocioeconomico.automovilGravado.value = d.data.automovilGravado;\r\n estudioSocioeconomico.estudioSocioeconomicoId.value = d.data.estudioSocioeconomicoId ?? \"\";\r\n //- Cambios Conyuge\r\n if (d.data.ocupacionActual != null && d.data.ocupacionActual != \"\")\r\n estudioSocioeconomico.ocupacionActualArray.value = d.data.ocupacionActual.split(\",\").map(a => Number(a));\r\n if (d.data.ingresos) {\r\n try {\r\n let ing = JSON.parse(d.data.ingresos) as string[];\r\n let ingresosGuardados = ing.map(elem => JSON.parse(elem) as (IngresoNomina | IngresoGeneral)[]);\r\n esComprobacionIngresos.cantidadNomina.value = (ingresosGuardados[0] as IngresoNomina[]).length;\r\n esComprobacionIngresos.nomina.value = ingresosGuardados[0] as IngresoNomina[];\r\n esComprobacionIngresos.cantidadNegocioPropio.value = ingresosGuardados[1].length;\r\n esComprobacionIngresos.negocioPropio.value = ingresosGuardados[1] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadPension.value = ingresosGuardados[2].length;\r\n esComprobacionIngresos.pension.value = ingresosGuardados[2] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadActividadEmpresarial.value = ingresosGuardados[3].length;\r\n esComprobacionIngresos.actividadEmpresarial.value = ingresosGuardados[3] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadArrendamiento.value = ingresosGuardados[4].length;\r\n esComprobacionIngresos.arrendamiento.value = ingresosGuardados[4] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadConcesion.value = ingresosGuardados[5].length;\r\n esComprobacionIngresos.concesion.value = ingresosGuardados[5] as IngresoGeneral[];\r\n esComprobacionIngresos.cantidadOtro.value = ingresosGuardados[6].length;\r\n esComprobacionIngresos.otro.value = ingresosGuardados[6] as IngresoGeneral[];\r\n nextTick(\r\n () =>\r\n (estudioSocioeconomico.sueldoNominalNeto.value = Number.parseFloat(\r\n (d.data.sueldoNominalNeto ?? \"0\").toString()\r\n ))\r\n );\r\n } catch {\r\n /* Prevenir detener funcionamiento por formato de guardado de ingresos antiguo */\r\n }\r\n }\r\n if (d.data.medioPreferidoContacto != null)\r\n medioPreferidoContactoJSON.value = d.data.medioPreferidoContacto.split(\",\").map(a => Number(a));\r\n else medioPreferidoContactoJSON.value = [\"2\"].map(a => Number(a));\r\n esCargado = true;\r\n});\r\n</script>\r\n\r\n<script lang=\"ts\">\r\nimport { Cliente, Core } from \"@/servicios/api\";\r\nimport { provide, computed, watch, ref, toRefs, onMounted, reactive, toRaw, nextTick, defineComponent } from \"vue\";\r\nimport _ from \"lodash\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport Swal from \"sweetalert2\";\r\n\r\nexport default defineComponent({});\r\n\r\nexport interface EstudioSocioeconomico extends Cliente.Cliente.EstudioSocioeconomico {\r\n estudioSocioeconomicoId: string;\r\n ocupacionActualArray: number[];\r\n}\r\n</script>\r\n\r\n<style src=\"sweetalert2/dist/sweetalert2.min.css\"></style>\r\n\r\n<style lang=\"scss\">\r\n.accordion-item {\r\n background-color: #ffffff;\r\n}\r\n\r\nbody {\r\n min-height: 100vh;\r\n background-color: #f5f9fc !important;\r\n\r\n .documentos-requeridos {\r\n .form-check-input:disabled ~ label {\r\n color: #6f6f6f;\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.container(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.pt-4(v-if=\"mostrarHeaderFooter\")\r\n .col-md-6: .card: .card-body\r\n .row\r\n .col-md-5\r\n b.form-label Cliente\r\n br\r\n span.text-primary.fw-bold {{ cliente.nombreCliente.value }}\r\n .col-md-4\r\n b.form-label Lugar\r\n br\r\n span.text-primary.fw-bold Ciudad de México\r\n .col-md-3\r\n b.form-label Fecha\r\n br\r\n span.text-primary.fw-bold {{ fechaActual }}\r\n .col-md-6: .card: .card-body\r\n .row\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Ingresos\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Egresos\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Remanente\r\n .row\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalIngresos) }}\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalEgresos) }}\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalIngresos - obligadoSolidarioTotalEgresos) }}\r\n .row(v-if=\"header\"): .col-md-12: p.mt-2.mb-0.fs-5.fw-bold.text-primary {{ header }}\r\n .row.mt-4(v-if=\"header\"): .col-md-12.col-sm-12: .card: .card-body\r\n .row\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Ingresos\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Egresos\r\n .col-4.text-center\r\n b.form-label.font-weight-bold Remanente\r\n .row\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalIngresos) }}\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalEgresos) }}\r\n .col-4.text-center\r\n span.text-primary.fw-bold {{ filtros.filtroDivisa(obligadoSolidarioTotalIngresos - obligadoSolidarioTotalEgresos) }}\r\n .row: .col.pt-4.pb-4\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionDatosObligadoSolidario'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'datosObligadoSolidario'\") Datos Generales\r\n .accordion-collapse.collapse(:id=\"componentId + 'datosObligadoSolidario'\" :data-bs-parent=\"'#' + componentId + 'acordionDatosObligadoSolidario'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Nombre:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.nombre.value\"\r\n )\r\n .invalid-feedback Nombre invalido.\r\n .col-md-3\r\n label.form-label Apellido Paterno:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.apellidoPaterno.value\"\r\n )\r\n .invalid-feedback Apellido Paterno invalido.\r\n .col-md-3\r\n label.form-label Apellido Materno:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.apellidoMeterno.value\"\r\n )\r\n .invalid-feedback Apellido Materno invalido.\r\n .col-md-3\r\n label.form-label Parentesco:\r\n //-input.form-control(\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.parentezco\"\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\").invalid-feedback Parentesco invalido.\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.parentezco.value\")\r\n option(value=\"PADRE\") PADRE/MADRE\r\n option(value=\"HIJO\") HIJO/HIJA\r\n option(value=\"AMIGO\") CONOCIDO\r\n option(value=\"OTRO\") OTRO FAMILIAR\r\n .row\r\n .col-md-3\r\n label.form-label Nacionalidad:\r\n hir-select2(\r\n :form=\"componentId + 'form'\"\r\n :data=\"catalogos.paises.value.map(a => ({ id: a.paisId, text: (a.gentilicio || '').trim() || a.descripcion }))\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.paisNacionalidadId.value\"\r\n )\r\n //-.col-md-3\r\n label.form-label C.P.:\r\n input.form-control(:form=\"componentId + 'form'\" v-model=\"estudioSocioeconomicoObligadoSolidario.codigoPostal\" type=\"text\" pattern=\"[0-9]{5}\")\r\n .invalid-feedback Colocar un código postal valido.\r\n //-.col-md-3\r\n label.form-label Municipio o AlcaldÃa:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.coloniaId\")\r\n option(v-for=\"colonia in catalogos.colonias\" :value=\"colonia.coloniaId\") {{ colonia.colonia }}\r\n //-.col-md-3\r\n label.form-label Estado de Nacimiento:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.estadoNacimiento\"\r\n )\r\n .invalid-feedback Estado de Nacimiento invalido.\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.municipioAlcaldia\").invalid-feedback Mucipio o AlcaldÃa invalido.\r\n .col-md-3 \r\n label.form-label Estado Civil:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.estadoCivil.value\")\r\n option(v-for=\"ecivil in catalogos.estadoCivil.value\" :value=\"ecivil\") {{ ecivil.replace(/_/g, \" \") }}\r\n .col-md-3\r\n label.form-label Régimen Matrimonial:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.regimenMatrimonial.value\" :disabled=\"regimenMatrimonial\")\r\n option(v-for=\"regimen in catalogos.regimenMatrimonial.value\" :value=\"regimen\") {{ regimen.replace(/_/g, \" \") }}\r\n .col-md-3\r\n label.form-label RFC:\r\n input.form-control(\r\n type=\"text\"\r\n pattern=\"[a-zA-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][a-zA-Z,0-9]?[a-zA-Z,0-9]?[0-9,a-zA-Z]?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.rfc.value\"\r\n )\r\n .invalid-feedback RFC invalido.\r\n .col-md-3\r\n label.form-label Fecha de Nacimiento:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"date\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.fechaNacimiento.value\"\r\n min=\"1900-01-01\"\r\n :max=\"fechaIso\"\r\n )\r\n .invalid-feedback Fecha de Nacimiento invalida.\r\n .row.mt-2: .col-md-12.text-end\r\n .form.text-center.mt-2: button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionDomicilioObligadoSolidario'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#' + componentId + 'domicilioObligadoSolidario'\"\r\n ) Domicilio Actual\r\n .accordion-collapse.collapse(\r\n :id=\"componentId + 'domicilioObligadoSolidario'\"\r\n :data-bs-parent=\"'#' + componentId + 'acordionDomicilioObligadoSolidario'\"\r\n ): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Calle:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.calle.value\"\r\n )\r\n .invalid-feedback Calle invalida.\r\n .col-md-3\r\n label.form-label No. Exterior:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[a-zA-Z0-9 ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.numExt.value\"\r\n )\r\n .invalid-feedback No. Exterior inválido.\r\n .col-md-3\r\n label.form-label CP:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]{5}\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.cp.value\"\r\n maxlength=\"5\"\r\n )\r\n .invalid-feedback Codigo postal invalido.\r\n .col-md-3\r\n label.form-label Colonia:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.municipioAlcaldiaDocumento\"\r\n )\r\n .invalid-feedback Municipio / AlcaldÃa invalido.\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.coloniaIdOS.value\")\r\n option(v-for=\"colonia in catalogos.coloniasOS.value\" :value=\"colonia.coloniaId\") {{ colonia.colonia }}\r\n .invalid-feedback Ingrese un codigo postal.\r\n //-.col-md-3\r\n label.form-label Ciudad:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.ciudad\"\r\n )\r\n .invalid-feedback Ciudad invalida.\r\n .col-md-3\r\n label.form-label Municipio / AlcaldÃa:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.municipioAlcaldia.value\"\r\n )\r\n .invalid-feedback Colonia invalida.\r\n .col-md-3\r\n label.form-label Estado:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.estadoDomicilio.value\"\r\n )\r\n .invalid-feedback Estado invalido.\r\n .col-md-3\r\n label.form-label Tel. Particular:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n pattern=\"[0-9]{10}\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.telParticular.value\"\r\n maxlength=\"10\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Tel. Celular:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n pattern=\"[0-9]{10}\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.telCelular.value\"\r\n maxlength=\"10\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-3\r\n label.form-label Correo Electrónico:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.correoElectronico.value\"\r\n )\r\n .invalid-feedback Correo Electrónico invalido.\r\n .col-md-3\r\n label.form-label No. Dependientes Económicos:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.numDependientesEconomicos.value\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n maxlength=\"3\"\r\n max=\"100\"\r\n )\r\n .invalid-feedback No. Dependeintes Económicos invalido.\r\n .row.mt-2: .col-md-12.text-end\r\n .form.text-center.mt-2: button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionDatosVivienda'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'datosVivienda'\") Datos de Vivienda\r\n .accordion-collapse.collapse(:id=\"componentId + 'datosVivienda'\" :data-bs-parent=\"'#' + componentId + 'acordionDatosVivienda'\"): .accordion-body\r\n .row\r\n .col-md-4\r\n label.form-label Actualmente su vivienda es:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.vivienda.value\")\r\n option(:value=\"0\") Propio\r\n option(:value=\"2\") Familiar\r\n option(:value=\"3\") Hipotecada\r\n option(:value=\"1\") Rentada\r\n .col-md-4\r\n label.form-label Nombre del Arrendador:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.nombreArrendador.value\"\r\n :required=\"requeridoViviendaActual\"\r\n )\r\n .invalid-feedback Nombre del Arrendador invalido.\r\n .col-md-4\r\n label.form-label Teléfono del del Arrendador:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n pattern=\"[0-9]{10}\"\r\n maxlength=\"10\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.telFijoArrendador.value\"\r\n :required=\"requeridoViviendaActual\"\r\n )\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n //- .col-md-3\r\n label.form-label Cel del Arrendador:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n pattern=\"[0-9]{10}\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.telCelArrendador\"\r\n )\r\n .invalid-feedback Tel. Cel del Arrendador invalido.\r\n .row.mt-2: .col-md-12.text-end\r\n .form.text-center.mt-2: button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n //-.accordion.shadow.mb-4(:id=\"this.componentId + 'acordionOcupacion'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + this.componentId + 'datosOcupacion'\") Ocupación\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'datosOcupacion'\" :data-bs-parent=\"'#' + this.componentId + 'acordionOcupacion'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Ocupación Actual:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.ocupacionActual\")\r\n option(value=\"1\") Asalariado (Empleado)\r\n option(value=\"2\") Profesional Independiente\r\n option(value=\"5\") Arrendador o Inversionista\r\n option(value=\"4\") Personas FÃsicas con Actividad Empresarial o RIF\r\n option(value=\"3\") Jubilado o Pensionado\r\n .col-md-3\r\n label.form-label Especificación de Otro:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.otraOcupacion\"\r\n )\r\n .invalid-feedback Especificación de Otro invalido.\r\n .col-md-3\r\n label.form-label Nombre de la Empresa:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[0-9a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.nombreEmpresa\"\r\n )\r\n .invalid-feedback Nombre de la Empresa invalida.\r\n .col-md-3\r\n label.form-label Actividad de la Empresa:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.actividadEmpresa\"\r\n )\r\n .invalid-feedback Actividad de la Empresa invalida.\r\n .row\r\n .col-md-3\r\n label.form-label Tel. de la Empresa:\r\n input.form-control(:form=\"componentId + 'form'\" type=\"tel\" pattern=\"[0-9]{10}\" v-model=\"estudioSocioeconomicoObligadoSolidario.telEmpresa\")\r\n .invalid-feedback Tel. de la Empresa invalido.\r\n .col-md-3\r\n label.form-label Extensión de la Empresa:\r\n input.form-control(:form=\"componentId + 'form'\" type=\"text\" pattern=\"^[0-9]+\" v-model=\"estudioSocioeconomicoObligadoSolidario.numExtEmpresa\")\r\n .invalid-feedback Extensión de la Empresa invalido.\r\n .col-md-3\r\n label.form-label Correo Electrónico del Trabajo:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.correoEmpresa\"\r\n )\r\n .invalid-feedback Correo Electrónico del Trabajo invalido.\r\n .col-md-3\r\n label.form-label Puesto que Desempeña:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model=\"estudioSocioeconomicoObligadoSolidario.puesto\")\r\n .invalid-feedback Puesto que Desempeña invalido.\r\n .row\r\n .col-md-3\r\n label.form-label Nombre del Jefe Inmediato:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.nombreJefeDirecto\"\r\n )\r\n .invalid-feedback Nombre del Jefe Inmediato invalido.\r\n .col-md-3\r\n label.form-label Profesión:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.profesion\")\r\n option(v-for=\"prof in catalogos.profesiones\" :value=\"prof.profesionId\" :key=\"prof.profesionId\") {{ prof.descripcion }}\r\n //- .col-md-3\r\n label.form-label Antigüedad Laboral (años):\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.antiguedadAnios\"\r\n )\r\n .invalid-feedback Antigüedad Laboral (años) invalido.\r\n .col-md-3\r\n label.form-label Antigüedad Laboral (meses):\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.antiguedadMeses\"\r\n )\r\n .invalid-feedback Antigüedad Laboral (meses) invalido.\r\n .row.mt-2: .col-md-12.text-end\r\n button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n informacion-laboral(\r\n :estudio-socioeconomico=\"estudioSocioeconomicoObligadoSolidario\"\r\n :es-comprobacion-ingresos=\"esComprobacionIngresos\"\r\n :comp-id=\"componentId\"\r\n :catalogos=\"catalogos\"\r\n @guardar=\"guardarEstudioSocioeconomico()\"\r\n )\r\n //-.accordion.shadow.mb-4(:id=\"this.componentId + 'acordion4'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + this.componentId + 'ingresos'\") Ingresos (En moneda nacional)\r\n .accordion-collapse.collapse(:id=\"this.componentId + 'ingresos'\" :data-bs-parent=\"'#' + this.componentId + 'acordion4'\"): .accordion-body\r\n //-.row\r\n .col-md-3\r\n label.form-label Sueldo Nominal Bruto:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.sueldoNominalBruto\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\")\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.sueldoNominalBruto\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\")\r\n .col-md-3\r\n label.form-label ISR e IMSS:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.isrImss\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n m\r\n ax=\"999999999\"\r\n step=\"any\").invalid-feedback ISR e IMSS invalido.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.isrImss\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\")\r\n .col-md-3\r\n label.form-label Sueldo Nominal Neto:\r\n //- input.form-control(v-model=\"estudioSocioeconomicoSueldoNominalNeto\" readonly)\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoSueldoNominalNeto\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\", readonly)\r\n .col-md-3\r\n label.form-label Gratificaciones:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.gratificaciones\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\").invalid-feedback Gratificaciones invalidas.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.gratificaciones\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n\r\n //-.row\r\n .col-md-3\r\n label.form-label Rentas:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.rentas\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\").invalid-feedback Rentas invalidas.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.rentas\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n .col-md-3\r\n label.form-label Comisiones:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.comisiones\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n max=\"999999999\"\r\n step=\"any\").invalid-feedback Comisiones invalidas.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.comisiones\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n .col-md-3\r\n label.form-label Ingresos del Cónyuge:\r\n //- input.form-control(type=\"text\" pattern=\"^[0-9]+([.][0-9]+)?\" v-model=\"estudioSocioeconomicoObligadoSolidario.ingresosConyuge\").invalid-feedback Ingresos del Cónyuge invalido.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.ingresosConyuge\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n .col-md-3\r\n label.form-label Otros Ingresos:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.otrosIngresos\").invalid-feedback Otros Ingresos invalido.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.otrosIngresos\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n //-.row\r\n .col-md-3\r\n label.form-label Puede Comprar Ingresos:\r\n select.form-select\r\n option(:value=\"true\") Si\r\n option(:value=\"false\") No\r\n .col-md-3\r\n label.form-label Total de Ingresos Comprobables:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.totalIngresosComprobabes\")\r\n .invalid-feedback Total de Ingresos Comprobables invalido.\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoObligadoSolidario.totalIngresosComprobabes\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",)\r\n .col-md-3\r\n label.form-label Total de Ingresos:\r\n //- input.form-control(readonly v-model=\"estudioSocioeconomicoTotalIngresos\")\r\n autonumeric.form-control(:form=\"formId\" v-model=\"estudioSocioeconomicoTotalIngresos\" :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\",readonly)\r\n //-.row.mt-2: .col-md-12.text-end\r\n button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion6'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'gastos'\") Gastos (En moneda nacional)\r\n .accordion-collapse.collapse(:id=\"componentId + 'gastos'\" :data-bs-parent=\"'#' + componentId + 'acordion6'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Monto de los Préstamos:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.pagoMensualCreditos\"\r\n )\r\n .invalid-feedback Monto de los Préstamos invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.pagoMensualCreditos.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Monto de Deuda Tarjeta(s) de Crédito:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.tarjetaCredito\"\r\n )\r\n .invalid-feedback Monto de Deuda Tarjeta(s) de Crédito invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.tarjetaCredito.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Renta:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.renta\"\r\n )\r\n .invalid-feedback Renta invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.renta.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Colegiaturas:\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.colegiaturas\"\r\n )\r\n .invalid-feedback Colegiaturas invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.colegiaturas.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .row\r\n .col-md-3\r\n label.form-label Gasto Familiar:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.gastoFamiliar\"\r\n )\r\n .invalid-feedback Gasto Familiar invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.gastoFamiliar.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Otros Egresos:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n min=\"0\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.otrosEgresos\"\r\n )\r\n .invalid-feedback Otros Egresos invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.otrosEgresos.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label Total Egresos:\r\n //-input.form-control(v-model=\"estudioSocioeconomicoTotalEgresos\" readonly)\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n v-model=\"estudioSocioeconomicoTotalEgresos\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n readonly\r\n )\r\n .row.mt-2: .col-md-12.text-end\r\n .form.text-center.mt-2: button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordion5'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.collapsed.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'viviendaActual'\") Propiedades\r\n .accordion-collapse.collapse(:id=\"componentId + 'viviendaActual'\" :data-bs-parent=\"'#' + componentId + 'acordion5'\"): .accordion-body\r\n .row\r\n .col-md-3\r\n label.form-label Relación Patrimonial Inmueble:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.relacionInmueble.value\"\r\n )\r\n .invalid-feedback Relación Patrimonial Inmueble invalido.\r\n .col-md-3\r\n label.form-label Cantidad de Inmuebles:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]{1,2}\"\r\n min=\"0\"\r\n max=\"99\"\r\n size=\"2\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.cantidadInmueble.value\"\r\n )\r\n .invalid-feedback Cantidad de Inmuebles invalido.\r\n .col-md-3\r\n label.form-label Valor Aproximado de Inmueble:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.valorAproximadoInmueble\"\r\n )\r\n .invalid-feedback Valor Aproximado de Inmueble invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.valorAproximadoInmueble.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label ¿Está Gravado?:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.gravadoInmueble.value\")\r\n option(:value=\"true\") Si\r\n option(:value=\"false\") No\r\n .row\r\n .col-md-3\r\n label.form-label Relación Patrimonial Automóviles:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.relacionPatrimonialAutomoviles.value\"\r\n )\r\n .invalid-feedback Relación Patrimonial Automóviles invalido.\r\n .col-md-3\r\n label.form-label Cantidad de Automóviles:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]{1,2}\"\r\n min=\"0\"\r\n max=\"99\"\r\n size=\"2\"\r\n minlength=\"1\"\r\n maxlength=\"2\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.cantidadAutomoviles.value\"\r\n )\r\n .invalid-feedback Cantidad de Automóviles invalido.\r\n .col-md-3\r\n label.form-label Valor Aproximado Automóviles:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"^[0-9]+([.][0-9]+)?\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.valorAproximadoAutomoviles\"\r\n )\r\n .invalid-feedback Valor Aproximado Automóviles invalido.\r\n hir-autonumeric.form-control(\r\n :form=\"componentId\"\r\n v-model=\"estudioSocioeconomicoObligadoSolidario.valorAproximadoAutomoviles.value\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .col-md-3\r\n label.form-label ¿Está Gravado?:\r\n select.form-select(v-model=\"estudioSocioeconomicoObligadoSolidario.gravadoAutomoviles\")\r\n option(:value=\"true\") Si\r\n option(:value=\"false\") No\r\n .invalid-feedback invalido.\r\n .row.mt-2: .col-md-12.text-end: form(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"guardarEstudioSocioeconomico()\")\r\n .form.text-center.mt-2: button.btn.btn-primary.text-light.fw-bold(:form=\"componentId + 'form'\") Guardar\r\n .text-center \r\n button.btn.btn-success(:form=\"componentId + 'form'\" v-on:click=\"estudioSocioeconomicoObligadoSolidario.notificacionAscesor.value = true\") Enviar Datos\r\n</template>\r\n\r\n<style lang=\"scss\">\r\n.accordion-item {\r\n background-color: #ffffff;\r\n}\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport InformacionLaboral from \"./EstudioSocioeconomico/InformacionLaboral.vue\";\r\nimport { provide, ref, reactive, toRefs, computed, watch, toRaw, onMounted, nextTick } from \"vue\";\r\nimport { useStore } from \"@/store\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport * as ESUtilidades from \"../composables/EstudioSocioeconomico\";\r\nimport { Cliente, Core } from \"@/servicios/api\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport HirAutonumeric from \"@/components/HirAutonumeric.vue\";\r\nimport { useStore as useClienteClienteStore } from \"../store\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { debounce as _debounce } from \"lodash\";\r\n\r\n//#region Data\r\nconst store = useClienteClienteStore();\r\nconst $store = useStore();\r\nconst $router = useRouter();\r\nconst componentId = utilidades.generarId();\r\nconst formularioValidado = ref(false);\r\nconst fechaIso = new Date().toISOString().substring(0, 10);\r\nconst fechaActual = new Intl.DateTimeFormat(\"es-MX\", {\r\n day: \"2-digit\",\r\n month: \"2-digit\",\r\n year: \"numeric\"\r\n}).format(new Date());\r\nconst formDom = ref(null as HTMLFormElement | null);\r\nconst catalogos = toRefs(\r\n reactive({\r\n estadoCivil: Core.Models.EstadoCivil,\r\n regimenMatrimonial: Core.Models.RegimenMatrimonial,\r\n profesiones: [] as Core.Models.Profesion[],\r\n colonias: [] as Cliente.Cliente.ObtenerColoniasBody[],\r\n coloniasOS: [] as Cliente.Cliente.ObtenerColoniasBody[],\r\n paises: [] as Core.Models.Pais[]\r\n })\r\n);\r\nconst cliente = toRefs(\r\n reactive({\r\n nombreCliente: \"\"\r\n })\r\n);\r\nconst reactiveEstudioSocioeconomicoObligadoSolidario = reactive({\r\n estudioSocioeconomicoId: \"\",\r\n clienteId: 0,\r\n nombre: \"\" as string | undefined,\r\n apellidoPaterno: \"\" as string | undefined,\r\n apellidoMeterno: \"\" as string | undefined,\r\n parentezco: undefined as string | undefined,\r\n fechaNacimiento: \"\" as string | undefined,\r\n nacionalidad: \"\" as string | undefined,\r\n estadoNacimiento: \"\" as string | undefined,\r\n municipioAlcaldia: \"\" as string | undefined,\r\n estadoCivil: undefined as Core.Models.EstadoCivil | undefined,\r\n regimenMatrimnial: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n rfc: \"\" as string | undefined,\r\n calle: \"\" as string | undefined,\r\n numExt: \"\" as string | undefined,\r\n colonia: \"\" as string | undefined,\r\n estadoDomicilio: \"\" as string | undefined,\r\n municipioAlcaldiaDocumento: \"\" as string | undefined,\r\n ciudad: \"\" as string | undefined,\r\n cp: \"\",\r\n telParticular: \"\",\r\n telCelular: \"\",\r\n correoElectronico: \"\" as string | undefined,\r\n numDependientesEconomicos: 0,\r\n vivienda: undefined as number | undefined,\r\n nombreArrendador: \"\",\r\n telFijoArrendador: \"\" as string | undefined,\r\n telCelArrendador: \"\" as string | undefined,\r\n ocupacionActual: \"\",\r\n ocupacionActualArray: [] as number[],\r\n otraOcupacion: \"\" as string | undefined,\r\n nombreEmpresa: \"\" as string | undefined,\r\n actividadEmpresa: \"\" as string | undefined,\r\n telEmpresa: \"\" as string | undefined,\r\n numExtEmpresa: 0,\r\n correoEmpresa: \"\",\r\n puesto: \"\" as string | undefined,\r\n nombreJefeDirecto: \"\",\r\n profesion: undefined as number | undefined,\r\n antiguedadAnios: 0,\r\n antiguedadMeses: 0,\r\n ingresosConyuge: 0,\r\n otrosIngresos: 0,\r\n puedeComprarIngresos: false,\r\n relacionInmueble: \"\",\r\n cantidadInmueble: 0,\r\n valorAproximadoInmueble: 0,\r\n gravadoInmueble: false,\r\n relacionPatrimonialAutomoviles: \"\",\r\n cantidadAutomoviles: 0,\r\n valorAproximadoAutomoviles: 0,\r\n gravadoAutomoviles: false,\r\n regimenMatrimonial: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n esAvalObligadoSolidario: false,\r\n esDeclaradoMoratoriaSuspensionPagos: false,\r\n esDemandadoIncumplimientoObligacionesFinancieras: false,\r\n estadoCivilVendedor: undefined as Core.Models.EstadoCivil | undefined,\r\n regimenMatrimonialVendedor: undefined as Core.Models.RegimenMatrimonial | undefined,\r\n paisNacionalidadId: 0,\r\n sueldoNominalBruto: 0,\r\n isrImss: 0,\r\n honorarios: 0,\r\n gratificaciones: 0,\r\n rentas: 0,\r\n comisiones: 0,\r\n totalIngresosComprobabes: 0,\r\n pagoMensualCreditos: 0,\r\n tarjetaCredito: 0,\r\n renta: 0,\r\n colegiaturas: 0,\r\n gastoFamiliar: 0,\r\n otrosEgresos: 0,\r\n sueldoNominalNeto: 0.0,\r\n totalIngresos: 0,\r\n totalEgresos: 0,\r\n codigoPostal: \"\",\r\n coloniaId: 0,\r\n coloniaIdOS: 0,\r\n notificacionAscesor: false,\r\n ingresos: \"\"\r\n});\r\nconst estudioSocioeconomicoObligadoSolidario = toRefs(reactiveEstudioSocioeconomicoObligadoSolidario);\r\nconst esComprobacionIngresos = ESUtilidades.generarObjetoIngresos();\r\nprovide(\"ComprobacionIngresos\", esComprobacionIngresos);\r\nconst obligadoSolidarioTotalIngresos = ref(0.0);\r\nconst obligadoSolidarioTotalEgresos = ref(0.0);\r\nconst aIngresos = ref([] as string[]);\r\n//#endregion\r\n\r\n//#region Props\r\ninterface Props {\r\n mostrarHeaderFooter?: boolean;\r\n llave?: string;\r\n header?: string;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n mostrarHeaderFooter: true,\r\n llave: \"\",\r\n header: \"\"\r\n});\r\n//#endregion\r\n\r\n//#region Computed\r\nconst estudioSocioeconomicoSueldoNominalNeto = computed((): number => {\r\n let es = estudioSocioeconomicoObligadoSolidario;\r\n let r = (es.sueldoNominalBruto?.value ?? 0) - (es.isrImss?.value ?? 0);\r\n return isNaN(r) ? 0 : r;\r\n});\r\nconst estudioSocioeconomicoTotalIngresos = computed((): number => {\r\n let es = estudioSocioeconomicoObligadoSolidario;\r\n let r =\r\n Number(estudioSocioeconomicoSueldoNominalNeto.value) +\r\n Number(es.honorarios.value) +\r\n Number(es.gratificaciones.value) +\r\n Number(es.rentas.value) +\r\n Number(es.comisiones.value) +\r\n Number(es.otrosIngresos.value);\r\n return isNaN(r) ? 0 : r;\r\n});\r\nconst estudioSocioeconomicoTotalEgresos = computed((): number => {\r\n let es = estudioSocioeconomicoObligadoSolidario;\r\n let r =\r\n Number(es.pagoMensualCreditos.value) +\r\n Number(es.tarjetaCredito.value) +\r\n Number(es.renta.value) +\r\n Number(es.colegiaturas.value) +\r\n Number(es.gastoFamiliar.value) +\r\n Number(es.otrosEgresos.value);\r\n return isNaN(r) ? 0 : r;\r\n});\r\nconst regimenMatrimonial = computed((): boolean => {\r\n let es = estudioSocioeconomicoObligadoSolidario;\r\n es.regimenMatrimonial.value = undefined;\r\n es.regimenMatrimnial.value = undefined;\r\n if (es.estadoCivil.value == \"CASADO\") return false;\r\n return true;\r\n});\r\nconst requeridoViviendaActual = computed((): boolean => {\r\n let es = estudioSocioeconomicoObligadoSolidario;\r\n if (es.vivienda.value == 1) return true;\r\n return false;\r\n});\r\n//#endregion\r\n\r\n//#region Watch\r\nwatch(\r\n estudioSocioeconomicoObligadoSolidario.codigoPostal,\r\n _debounce((val: string) => {\r\n if (val) api.Cliente.Cliente.EscrituracionApi.ObtenerColonias(val).then(v => (catalogos.colonias.value = v.data));\r\n else catalogos.colonias.value = [];\r\n }, 300)\r\n);\r\n\r\nwatch(\r\n estudioSocioeconomicoObligadoSolidario.cp,\r\n _debounce((val: string) => {\r\n if (val) {\r\n api.Cliente.Cliente.EscrituracionApi.ObtenerColonias(val).then(v => {\r\n catalogos.coloniasOS.value = v.data;\r\n if (val.length == 5 && v.data.length == 0) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Codigo postal invalido.\"\r\n });\r\n }\r\n });\r\n } else {\r\n catalogos.coloniasOS.value = [];\r\n }\r\n }, 300)\r\n);\r\nwatch(estudioSocioeconomicoObligadoSolidario.coloniaId, () => {\r\n if (estudioSocioeconomicoObligadoSolidario.coloniaId.value > 0) {\r\n for (const oCol in catalogos.colonias.value) {\r\n if (catalogos.colonias.value[oCol].coloniaId == estudioSocioeconomicoObligadoSolidario.coloniaId.value) {\r\n estudioSocioeconomicoObligadoSolidario.estadoNacimiento.value = catalogos.colonias.value[oCol].estado;\r\n break;\r\n }\r\n }\r\n }\r\n});\r\nwatch(estudioSocioeconomicoObligadoSolidario.coloniaIdOS, () => {\r\n if (estudioSocioeconomicoObligadoSolidario.coloniaIdOS.value > 0) {\r\n for (const oCol in catalogos.coloniasOS.value) {\r\n if (catalogos.coloniasOS.value[oCol].coloniaId == estudioSocioeconomicoObligadoSolidario.coloniaIdOS.value) {\r\n estudioSocioeconomicoObligadoSolidario.coloniaIdOS.value = catalogos.coloniasOS.value[oCol].coloniaId;\r\n estudioSocioeconomicoObligadoSolidario.colonia.value = catalogos.coloniasOS.value[oCol].colonia;\r\n estudioSocioeconomicoObligadoSolidario.municipioAlcaldia.value = catalogos.coloniasOS.value[oCol].estado;\r\n estudioSocioeconomicoObligadoSolidario.ciudad.value = catalogos.coloniasOS.value[oCol].ciudad;\r\n break;\r\n }\r\n }\r\n }\r\n});\r\n//#endregion\r\n\r\n//#region Methods\r\nasync function guardarEstudioSocioeconomico() {\r\n let valido = formDom.value!.checkValidity();\r\n formularioValidado.value = true;\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n\r\n estudioSocioeconomicoObligadoSolidario.sueldoNominalNeto.value = estudioSocioeconomicoSueldoNominalNeto.value;\r\n estudioSocioeconomicoObligadoSolidario.totalIngresos.value = estudioSocioeconomicoTotalIngresos.value;\r\n estudioSocioeconomicoObligadoSolidario.totalEgresos.value = estudioSocioeconomicoTotalEgresos.value;\r\n\r\n if (estudioSocioeconomicoObligadoSolidario.fechaNacimiento.value === \"\")\r\n estudioSocioeconomicoObligadoSolidario.fechaNacimiento.value = undefined;\r\n aIngresos.value = [];\r\n verificarConceptos(esComprobacionIngresos.nomina.value, 1, esComprobacionIngresos.cantidadNomina.value);\r\n verificarConceptos(esComprobacionIngresos.negocioPropio.value, 2, esComprobacionIngresos.cantidadNegocioPropio.value);\r\n verificarConceptos(esComprobacionIngresos.pension.value, 3, esComprobacionIngresos.cantidadPension.value);\r\n verificarConceptos(\r\n esComprobacionIngresos.actividadEmpresarial.value,\r\n 4,\r\n esComprobacionIngresos.cantidadActividadEmpresarial.value\r\n );\r\n verificarConceptos(esComprobacionIngresos.arrendamiento.value, 5, esComprobacionIngresos.cantidadArrendamiento.value);\r\n verificarConceptos(esComprobacionIngresos.concesion.value, 6, esComprobacionIngresos.cantidadConcesion.value);\r\n verificarConceptos(esComprobacionIngresos.otro.value, 7, esComprobacionIngresos.cantidadOtro.value);\r\n estudioSocioeconomicoObligadoSolidario.ingresos.value = JSON.stringify(aIngresos.value);\r\n let b = estudioSocioeconomicoObligadoSolidario.ocupacionActual.value;\r\n estudioSocioeconomicoObligadoSolidario.ocupacionActual.value = (\r\n estudioSocioeconomicoObligadoSolidario.ocupacionActualArray.value || []\r\n ).join(\",\");\r\n /*Convertimos en JSON */\r\n sumarTodosConceptos();\r\n /*Gurdar Datos */\r\n let estudio = toRaw(reactiveEstudioSocioeconomicoObligadoSolidario) as Cliente.Cliente.ObligadoSolidario;\r\n let r = await api.Cliente.Cliente.EscrituracionApi.GuardarEstudioSocioeconomicoObligadoSolidario(estudio);\r\n estudioSocioeconomicoObligadoSolidario.ocupacionActual.value = b;\r\n $store.agregarToast({ tipo: r.data.estado, body: r.data.mensaje! });\r\n}\r\nfunction sumarDatos(value: { monto: number }[]): number {\r\n let suma = 0;\r\n suma = value.reduce((prev: number, curr: { monto: number }) => prev + curr.monto, 0) || 0;\r\n return suma;\r\n}\r\nfunction sumarTodosConceptos() {\r\n estudioSocioeconomicoObligadoSolidario.rentas.value = sumarDatos(esComprobacionIngresos.arrendamiento.value);\r\n estudioSocioeconomicoObligadoSolidario.otrosIngresos.value = sumarDatos(esComprobacionIngresos.otro.value);\r\n estudioSocioeconomicoObligadoSolidario.comisiones.value = sumarDatos(esComprobacionIngresos.concesion.value);\r\n estudioSocioeconomicoObligadoSolidario.sueldoNominalNeto.value =\r\n (esComprobacionIngresos.sueldoNetoTotal.value ?? 0) +\r\n sumarDatos(esComprobacionIngresos.pension.value ?? [{ monto: 0 }]) +\r\n sumarDatos(esComprobacionIngresos.negocioPropio.value ?? [{ monto: 0 }]) +\r\n sumarDatos(esComprobacionIngresos.actividadEmpresarial.value ?? [{ monto: 0 }]);\r\n obligadoSolidarioTotalIngresos.value =\r\n estudioSocioeconomicoObligadoSolidario.sueldoNominalNeto.value +\r\n estudioSocioeconomicoObligadoSolidario.rentas.value +\r\n estudioSocioeconomicoObligadoSolidario.otrosIngresos.value +\r\n estudioSocioeconomicoObligadoSolidario.comisiones.value;\r\n estudioSocioeconomicoObligadoSolidario.sueldoNominalNeto.value = obligadoSolidarioTotalIngresos.value;\r\n calcularEgresos();\r\n}\r\nfunction calcularEgresos() {\r\n obligadoSolidarioTotalEgresos.value =\r\n estudioSocioeconomicoObligadoSolidario.pagoMensualCreditos.value +\r\n estudioSocioeconomicoObligadoSolidario.tarjetaCredito.value +\r\n estudioSocioeconomicoObligadoSolidario.renta.value +\r\n estudioSocioeconomicoObligadoSolidario.colegiaturas.value +\r\n estudioSocioeconomicoObligadoSolidario.gastoFamiliar.value +\r\n estudioSocioeconomicoObligadoSolidario.otrosEgresos.value;\r\n}\r\nfunction verificarConceptos(\r\n arrayAdd: ESUtilidades.IngresoNomina[] | ESUtilidades.IngresoGeneral[],\r\n valueCurrent: number,\r\n cantidadCurrent: number\r\n): void {\r\n if (estudioSocioeconomicoObligadoSolidario.ocupacionActualArray.value.includes(valueCurrent)) {\r\n let arregloLimpio = [];\r\n for (let i = 0; i < cantidadCurrent; i++) {\r\n arregloLimpio.push(arrayAdd[i]);\r\n }\r\n aIngresos.value.push(JSON.stringify(arregloLimpio));\r\n } else {\r\n arrayAdd = [];\r\n aIngresos.value.push(JSON.stringify(arrayAdd));\r\n }\r\n}\r\n//#endregion\r\n\r\nonMounted(async () => {\r\n store.titulo = \"Obligado Solidario\";\r\n catalogos.profesiones.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerProfesiones()).data;\r\n catalogos.paises.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerPaises()).data;\r\n let llave = \"\";\r\n if ((props.llave || \"\").length) llave = props.llave;\r\n else llave = $router.currentRoute.value.query[\"estudioId\"] as string;\r\n let d = (await api.Cliente.Cliente.EscrituracionApi.ObtenerDatosCliente(llave, true)).data;\r\n cliente.nombreCliente.value = d.nombre + \" \" + d.apellidoPaterno + \" \" + d.apellidoMaterno;\r\n let d2 = await api.Cliente.Cliente.EscrituracionApi.ObtenerDatosObligadoSolidario(llave);\r\n ESUtilidades.mapear(d2.data, estudioSocioeconomicoObligadoSolidario);\r\n estudioSocioeconomicoObligadoSolidario.estudioSocioeconomicoId!.value = llave;\r\n estudioSocioeconomicoObligadoSolidario.clienteId.value = d2.data.clienteId;\r\n /*Creamos el Arreglo de Ocupacion Actual */\r\n estudioSocioeconomicoObligadoSolidario.ocupacionActualArray.value = [];\r\n if (d2.data.ocupacionActual != null && d2.data.ocupacionActual != \"\")\r\n estudioSocioeconomicoObligadoSolidario.ocupacionActualArray.value = d2.data.ocupacionActual\r\n .split(\",\")\r\n .map((a: string) => Number(a));\r\n ESUtilidades.asignarIngresos(d2.data.ingresos, esComprobacionIngresos);\r\n nextTick(\r\n () =>\r\n (estudioSocioeconomicoObligadoSolidario.sueldoNominalNeto!.value = Number.parseFloat(\r\n (d2.data.sueldoNominalNeto ?? \"0\").toString()\r\n ))\r\n );\r\n calcularEgresos();\r\n /*Cargamos JSON de ingresos */\r\n formularioValidado.value = true;\r\n});\r\n</script>\r\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// covert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n return +d;\n}\n\nexport function weeksInWeekYear(weekYear) {\n const p1 =\n (weekYear +\n Math.floor(weekYear / 4) -\n Math.floor(weekYear / 100) +\n Math.floor(weekYear / 400)) %\n 7,\n last = weekYear - 1,\n p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > 60 ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n\nexport const ianaRegex =\n /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n","import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n","import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: false, val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed, val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTime(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n formatDateTimeParts(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.formatToParts();\n }\n\n resolvedOptions(dt, opts = {}) {\n const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.resolvedOptions();\n }\n\n num(n, p = 0) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n default:\n return null;\n }\n },\n tokenToString = (lildur) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n return this.num(lildur.get(mapped), token.length);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t));\n return stringifyTokens(tokens, tokenToString(collapsed));\n }\n}\n","export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n","/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"local\" || lowered === \"system\") return defaultZone;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && input.offset && typeof input.offset === \"number\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n","import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n throwOnInvalid;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n }\n}\n","import { padStart, roundTo, hasRelative } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlDTCache = {};\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache[key];\n if (!dtf) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache[key] = dtf;\n }\n return dtf;\n}\n\nlet intlNumCache = {};\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache[key];\n if (!inf) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache[key] = inf;\n }\n return inf;\n}\n\nlet intlRelCache = {};\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache[key];\n if (!inf) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache[key] = inf;\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n const smaller = localeStr.substring(0, uIndex);\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n } catch (e) {\n options = getCachedDTF(smaller).resolvedOptions();\n }\n\n const { numberingSystem, calendar } = options;\n // return the smaller one so that we can append the calendar and numbering overrides to it\n return [smaller, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n localeStr += \"-u\";\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2016, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n const mode = loc.listingMode(defaultOK);\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n\n let z;\n if (dt.zone.isUniversal) {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata.\n // So we have to make do. Two cases:\n // 1. The format options tell us to show the zone. We can't do that, so the best\n // we can do is format the date in UTC.\n // 2. The format options don't tell us to show the zone. Then we can adjust them\n // the time and tell the formatter to show it to us in UTC, so that the time is right\n // and the bad zone doesn't show up.\n z = \"UTC\";\n if (opts.timeZoneName) {\n this.dt = dt;\n } else {\n this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1000);\n }\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else {\n this.dt = dt;\n z = dt.zone.name;\n }\n\n const intlOpts = { ...this.opts };\n if (z) {\n intlOpts.timeZone = z;\n }\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n return this.dtf.formatToParts(this.dt.toJSDate());\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\n/**\n * @private\n */\n\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN);\n }\n\n static create(locale, numberingSystem, outputCalendar, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache = {};\n intlNumCache = {};\n intlRelCache = {};\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar);\n }\n\n constructor(locale, numbering, outputCalendar, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.months, () => {\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, \"month\"));\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems(defaultOK = true) {\n return listStuff(\n this,\n undefined,\n defaultOK,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length, defaultOK = true) {\n return listStuff(this, length, defaultOK, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith(\"en-us\")\n );\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n ianaRegex,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n };\n return new Duration(conf);\n}\n\nfunction antiTrunc(n) {\n return n < 0 ? Math.floor(n) : Math.ceil(n);\n}\n\n// NB: mutates parameters\nfunction convert(matrix, fromMap, fromUnit, toMap, toUnit) {\n const conv = matrix[toUnit][fromUnit],\n raw = fromMap[fromUnit] / conv,\n sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]),\n // ok, so this is wild, but see the matrix in the tests\n added =\n !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw);\n toMap[toUnit] += added;\n fromMap[fromUnit] -= added * conv;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n reverseUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n convert(matrix, vals, previous, vals, current);\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration#fromMillis}, {@link Duration#fromObject}, or {@link Duration#fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = accurate ? accurateMatrix : casualMatrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n };\n\n const value = this.shiftTo(\"hours\", \"minutes\", \"seconds\", \"milliseconds\");\n\n let fmt = opts.format === \"basic\" ? \"hhmm\" : \"hh:mm\";\n\n if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) {\n fmt += opts.format === \"basic\" ? \"ss\" : \":ss\";\n if (!opts.suppressMilliseconds || value.milliseconds !== 0) {\n fmt += \".SSS\";\n }\n }\n\n let str = value.toFormat(fmt);\n\n if (opts.includePrefix) {\n str = \"T\" + str;\n }\n\n return str;\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n return this.as(\"milliseconds\");\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hour\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem }),\n opts = { loc };\n\n if (conversionAccuracy) {\n opts.conversionAccuracy = conversionAccuracy;\n }\n\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // plus anything further down the chain that should be rolled up in to this\n for (const down in vals) {\n if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n convert(this.matrix, vals, down, built, k);\n }\n }\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n return clone(this, { values: built }, true).normalize();\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval#fromDateTimes}, {@link Interval#after}, {@link Interval#before}, or {@link Interval#fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval#merge}, {@link Interval#xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @return {number}\n */\n count(unit = \"milliseconds\") {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit),\n end = this.end.startOf(unit);\n return Math.floor(end.diff(start, unit).get(unit)) + 1;\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort(),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format string.\n * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime#toFormat} for details.\n * @param {Object} opts - options\n * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> 'Ù¡'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'RabiÊ» I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * @example Info.features() //=> { relative: false }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative() };\n }\n}\n","import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n let lowestOrder, highWater;\n\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n let delta = differ(cursor, later);\n highWater = cursor.plus({ [unit]: delta });\n\n if (highWater > later) {\n cursor = cursor.plus({ [unit]: delta - 1 });\n delta -= 1;\n } else {\n cursor = highWater;\n }\n\n results[unit] = delta;\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|å››|五|å…|七|å…«|ä¹]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\", false), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\", false), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true, false), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true, false), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false, false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false, false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false, false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false, false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true, false), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true, false), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n};\n\nfunction tokenForPart(part, locale, formatOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n return {\n literal: true,\n val: value,\n };\n }\n\n const style = formatOpts[type];\n\n let val = partTypeStyleToTokenVal[type];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n\n if (!formatOpts) {\n return token;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const parts = formatter.formatDateTimeParts(getDummyDateTime());\n\n const tokens = parts.map((p) => tokenForPart(p, locale, formatOpts));\n\n if (tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nfunction expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n","import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nfunction dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = dayOfWeek(year, month, day);\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear);\n } else if (weekNumber > weeksInWeekYear(year)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\nexport function hasInvalidWeekData(obj) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.week);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport { parseFromTokens, explainFromTokens } from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if (parsed && Object.keys(parsed).length !== 0) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime#local}, {@link DateTime#utc}, and (most flexibly) {@link DateTime#fromObject}. To create one from a standard string format, use {@link DateTime#fromISO}, {@link DateTime#fromHTTP}, and {@link DateTime#fromRFC2822}. To create one from a custom string format, use {@link DateTime#fromFormat}. To create one from a native JS date, use {@link DateTime#fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n normalized = normalizeObject(obj, normalizeUnit),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n loc = Locale.fromObject(opts);\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnit),\n settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized });\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit) {\n if (!this.isValid) return this;\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n o.weekday = 1;\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit);\n }\n\n /**\n * Equality check\n * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 dÃa\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n","export default \"__VITE_ASSET__7b0761ee__\"","<template lang=\"pug\">\r\ndiv\r\n .container.mb-5(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-12\r\n .d-inline-block(\r\n style=\"background: #374066; color: #ffffff; padding: 15px 26px; border-top-left-radius: 11px; border-top-right-radius: 11px; margin-left: 26px\"\r\n ): b.text.secondary Mi Perfil\r\n .row\r\n .col-md-12.shadow(style=\"border-radius: 8px; padding: 0\")\r\n div(style=\"background: #fff; padding: 16px 26px; border-bottom: #fff 1px solid\")\r\n .row\r\n .col-2.col-sm-2.col-md-1.col-lg-1.text-center\r\n b.fas.fa-camera.mt-3\r\n .col-4.col-sm-4.col-md-6.col-lg-7\r\n b.form-label.text-muted Hola\r\n br\r\n b.form-label.mt-4(style=\"color: #000; font-size: 18px\") {{ nombreCliente }}\r\n .col-4.col-sm-4.col-md-3.col-lg-2.text-center\r\n b.form-label.text-muted Registrado Desde\r\n br\r\n b.form-label {{ fechaCreacion }}\r\n .col-2.col-sm-2.col-md-2.col-lg-2.text-center\r\n .row.mt-2\r\n .col-md-12.shadow(style=\"border-radius: 8px; padding: 0\")\r\n div(style=\"background: #eceff2; padding: 16px 26px; border-bottom: #95a7d6 1px solid\")\r\n .row\r\n .col-md-2: b.form-label.text-secondary(style=\"font-size: 20px\") Mis Datos\r\n .row\r\n .col-md-12.shadow(style=\"border-radius: 8px; padding: 0\")\r\n div(style=\"background: #fff; padding: 16px 26px; border-bottom: #fff 1px solid\")\r\n .row\r\n .col-md-12: .card.mb-2: .card-body(style=\"background: #eceff2; padding: 16px 26px; border: #95a7d6 1px solid\")\r\n .row \r\n .col-md-10\r\n b.text-secondary(style=\"font-size: 22px\") ¿Necesitas actualizar algún dato personal?\r\n br\r\n .col-12.col-sm-12.col-md-12.col-lg-12.mt-2\r\n b.text-muted EnvÃanos un correo a \r\n b.text-primary atencionaclientes@hircasa.com.mx o contáctanos al teléfono: \r\n a(href=\"tel:525555119910,2\") 55 5511 9910 opción 2\r\n .col-md-2: a.btn.btn-primary.text-center.text-white.mt-2(@click.prevent=\"editarInformacion()\" v-if=\"puedeActualizarInformacion\") Editar Información\r\n .col-12\r\n b.text-secondary(style=\"font-size: 18px\") Domicilio\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") PaÃs:\r\n input.form-control(type=\"text\" v-model=\"ubicacion.pais.descripcion\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" readonly)\r\n .invalid-feedback Pais invalido.\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") C.P.:\r\n input.form-control(type=\"text\" v-model=\"CodigoPostal\" pattern=\"[0-9]{5}\" :readonly=\"!editarInformarPerfil\" required)\r\n .invalid-feedback C.P. invalido.\r\n .col-12.col-sm-4.col-md-4.col-lg-8\r\n label.form-label.text-muted(style=\"font-size: 18px\") Calle:\r\n input.form-control(\r\n type=\"text\"\r\n :form=\"formId\"\r\n v-model=\"ubicacion.calle\"\r\n pattern=\"[a-z0-9A-ZñÑéÉáÃÃÃóÓúÓ#.\\\\- ]+\"\r\n required\r\n :readonly=\"!editarInformarPerfil\"\r\n )\r\n .invalid-feedback Calle invalida.\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") Num. Interior y/o Exterior:\r\n input.form-control(type=\"text\" v-model=\"ubicacion.numero\" pattern=\"[a-zA-Z0-9ñÑéÉáÃÃÃóÓúÓ#.\\\\- ]+\" required :readonly=\"!editarInformarPerfil\")\r\n .invalid-feedback Número invalido.\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") Colonia:\r\n select.form-select(v-model=\"Colonia\" :disabled=\"!editarInformarPerfil\")\r\n option(v-for=\"(col, index) in Colonias\" :key=\"col.coloniaId\" :value=\"col\") {{ col.colonia }}\r\n //-input.form-control(type=\"text\" v-model=\"ubicacion.coloniaNombre\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" :readonly=\"!editarInformarPerfil\")\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") AlcaldÃa o Municipio:\r\n input.form-control(type=\"text\" v-model=\"ubicacion.ciudadNombre\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" readonly)\r\n //-select.form-select(v-model=\"estado\" :disabled=\"!editarInformarPerfil\")\r\n option(v-for=\"item in estados\" :key=\"item.coloniaId\") {{ item.ciudad }}\r\n .col-12.col-sm-4.col-md-4.col-lg-4\r\n label.form-label.text-muted(style=\"font-size: 18px\") Estado:\r\n input.form-control(type=\"text\" v-model=\"ubicacion.estadoNombre\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" readonly)\r\n .col-12.mt-4\r\n b.text-secondary(style=\"font-size: 18px\") Medios de Contacto:\r\n .col-12.col-sm-3.col-md-3.col-lg-3(v-if=\"editarInformarPerfil\")\r\n label.form-label.text-muted(style=\"font-size: 18px\") Seleccionar Lada:\r\n hir-select2(\r\n :from=\"componentId\"\r\n :data=\"Paises.map(a => ({ id: a.paisId, text: (a.gentilicio || '').trim() || a.descripcion }))\"\r\n v-model=\"LadaPais\"\r\n )\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Teléfono Particular:\r\n input.form-control(v-model=\"telParticular.valor\" type=\"tel\" pattern=\"^[0-9]{10}\" :readonly=\"!editarInformarPerfil\" required)\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Celular:\r\n input.form-control(v-model=\"celParticular.valor\" type=\"tel\" pattern=\"^[0-9]{10}\" :readonly=\"!editarInformarPerfil\" required)\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Correo personal:\r\n input.form-control(\r\n type=\"text\"\r\n v-model=\"emailParticular.valor\"\r\n pattern=\"[-a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n :readonly=\"!editarInformarPerfil\"\r\n )\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Teléfono Oficina:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model=\"telOficina.valor\" readonly)\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Celular Oficina:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" readonly)\r\n .col-12.col-sm-3.col-md-3.col-lg-3\r\n label.form-label.text-muted(style=\"font-size: 18px\") Correo Oficina:\r\n input.form-control(type=\"text\" v-model=\"email2.valor\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" readonly)\r\n .col-md-12: .row\r\n .col-md-8.mt-2\r\n b.text-secondary.mt-4(style=\"font-size: 18px\" v-if=\"editarInformarPerfil\") Para actualizar la información es requerida la carga de tu Identificación Oficial:\r\n .col-md-12.mt-2\r\n label.mt-2.btn.btn.btn-primary.text-white(v-if=\"editarInformarPerfil\")\r\n input(type=\"file\" style=\"display: none\" v-on:change=\"cargarIdentificacionOficial($event)\" accept=\"application/pdf\" multiple)\r\n | Cargar Documentos\r\n |   \r\n template(v-for=\"(item, i) in NombreArchivoCargado\" :key=\"item\")\r\n a.btn.text-primary(\r\n v-if=\"NombreArchivoCargado.length\"\r\n :href=\"ObtenerDocumento(item.toString())\"\r\n :title=\"'Documento- ' + item.toString() || ''\"\r\n target=\"_blank\"\r\n ) {{ \"Ver Documento \" + (i + 1) }}  \r\n .col-md-2.mt-2: a.btn.bg-white.text-center.text-primary.mt-2.border.border-primary(@click.prevent=\"\" v-if=\"editarInformarPerfil\") Cancelar\r\n //-.col-md-2.mt-2: a.btn.btn-primary.text-center.text-white.mt-2(@click.prevent=\"actualizarDatosClientes()\" v-if=\"editarInformarPerfil\") Finalizar\r\n .col-md-2.mt-2: form.text-center(\r\n style=\"display: none\"\r\n ref=\"formDom\"\r\n novalidate\r\n :id=\"componentId + 'form'\"\r\n @submit.prevent=\"actualizarDatosClientes()\"\r\n ): button.btn.btn-primary.text-white Finalizar\r\n .col-12.col-sm-12.col-md-12.col-lg-12.mt-4(v-if=\"beneficiarios.length && !editarInformarPerfil\")\r\n b.text-secondary(style=\"font-size: 18px\") Beneficiarios:\r\n .col-12.col-sm-6.col-md-6.col-lg-6(v-for=\"(item, index) in beneficiarios\" :key=\"item\" v-if=\"!editarInformarPerfil\")\r\n label.form-label.text-muted(style=\"font-size: 18px\") Nombre:\r\n label.form-control {{ item }}\r\n //-{{item}}\r\n //-input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n v-model=\"beneficiarios[index]\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n readonly\r\n )\r\n //-label.form-label.text-muted(style=\"font-size:18px;\") Apellidos:\r\n //- input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n readonly\r\n )\r\n .col-12.col-sm-12.col-md-12.col-lg-12\r\n .col-12.col-sm-12.col-md-12.col-lg-12.mt-4(v-if=\"!editarInformarPerfil\")\r\n b.text-secondary(style=\"font-size: 18px\") Si requieres cambiar la contraseña editar aquÃ:\r\n .col-12.col-sm-3.col-md-3.col-lg-3(v-if=\"!editarInformarPerfil\")\r\n label.form-label.text-muted(style=\"font-size: 18px\") Password Actual:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n required\r\n v-model=\"actualizarCliente.passwordActual.value\"\r\n pattern=\"[a-z0-9A-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Contraseña No Valida.\r\n .col-12.col-sm-3.col-md-3.col-lg-3(v-if=\"!editarInformarPerfil\")\r\n label.form-label.text-muted(style=\"font-size: 18px\") Nueva Password:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n required\r\n v-model=\"actualizarCliente.passwordNueva.value\"\r\n pattern=\"[a-zA-Z0-9ñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Contraseña No Valida.\r\n .col-12.col-sm-3.col-md-3.col-lg-3(v-if=\"!editarInformarPerfil\")\r\n label.form-label.text-muted(style=\"font-size: 18px\") Confirmar Password:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n required\r\n v-model=\"actualizarCliente.repPassword.value\"\r\n pattern=\"[a-z0-9A-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n )\r\n .invalid-feedback Contraseña No Valida.\r\n .col-12.col-sm-3.col-md-3.col-lg-3.mt-2.text-center(v-if=\"!editarInformarPerfil\")\r\n br\r\n form.text-center(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"actualizarPassword()\"): button.btn.btn-primary.text-white Actualizar\r\n //-button.btn.btn-primary.text-light.fw-bold(type=\"submit\" :form=\"componentId + 'form'\" @click=\"actualizarPassword()\") Actualizar\r\n Spinner-Loader#spinner(name=\"spinner\" style=\"width: 78%; display: none\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { toRefs, reactive, ref, toRaw, watch, computed, nextTick } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { Cliente, Core, EstadoRespuesta } from \"@/servicios/api\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { useStore } from \"@/store\";\r\nimport $ from \"jquery\";\r\nimport { DateTime } from \"luxon\";\r\nimport Swal from \"sweetalert2\";\r\nimport SpinnerLoader from \"../components/SpinnerLoader.vue\";\r\n//#region Data\r\nconst $store = useStore();\r\nconst formDom = ref(null as HTMLFormElement | null);\r\nconst componentId = utilidades.generarId();\r\nconst formularioValidado = ref(false);\r\nconst nombreCliente = ref(\"\");\r\nconst beneficiarios = ref([] as string[]);\r\nconst fechaCreacion = ref(\"\");\r\nconst reactiveActualizarCliente = reactive({\r\n clienteId: 0,\r\n passwordActual: \"\",\r\n passwordNueva: \"\",\r\n repPassword: \"\",\r\n estatus: Core.Enums.EstatusSesion.Recuperacion_Automatica\r\n});\r\nconst actualizarCliente = toRefs(reactiveActualizarCliente);\r\nconst ubicacion = ref({} as Core.Models.UbicacionLocal);\r\nconst formId = componentId + \"form\";\r\nconst Colonias = ref([] as Cliente.Cliente.ObtenerColoniasBody[]);\r\nconst Colonia = ref({} as Cliente.Cliente.ObtenerColoniasBody);\r\nconst telParticular = ref(reactive({} as Core.Models.PuntoContacto));\r\nconst celParticular = ref(reactive({} as Core.Models.PuntoContacto));\r\nconst emailParticular = ref({} as Core.Models.PuntoContacto);\r\nconst telOficina = ref({} as Core.Models.PuntoContacto);\r\nconst email2 = ref({} as Core.Models.PuntoContacto);\r\nconst archivo = ref(reactive(null as any));\r\nconst fileName = ref(reactive(\"\" as String));\r\nconst puedeActualizarInformacion = ref(false);\r\nconst puedeEditarInformacion = ref(false);\r\nconst CodigoPostal = ref(\"\");\r\nconst Paises = ref([] as Core.Models.Pais[]);\r\nconst LadaPais = ref(154);\r\nconst NombreArchivoCargado = ref([] as String[]);\r\nconst flag = ref(true);\r\n//#endregion\r\n//#region WATCH\r\nwatch(CodigoPostal, async (val: any) => {\r\n ubicacion.value.codigoPostalNombre = val;\r\n Colonias.value = (\r\n await api.Cliente.Cliente.EscrituracionApi.ObtenerColonias(ubicacion.value.codigoPostalNombre!)\r\n ).data;\r\n ubicacion.value.ciudadNombre = (Colonias.value[0] || {}).ciudad;\r\n ubicacion.value.estadoNombre = (Colonias.value[0] || {}).estado;\r\n Colonia.value = Colonias.value[0] || {};\r\n});\r\nwatch(LadaPais, (val: number) => {});\r\n//#region\r\n//#region Methods\r\nfunction editarInformacion() {\r\n puedeEditarInformacion.value = true;\r\n}\r\nasync function actualizarPassword() {\r\n let valido = formDom.value!.checkValidity();\r\n formularioValidado.value = true;\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n const res2 = await api.Cliente.Cliente.HomeApi.ActualizarContrasenia(\"\", toRaw(reactiveActualizarCliente));\r\n $store.agregarToast(res2.data);\r\n}\r\nasync function actualizarDatosClientes() {\r\n let valido = formDom.value!.checkValidity();\r\n formularioValidado.value = true;\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n NombreArchivoCargado.value = [];\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n ubicacion.value.coloniaId = Colonia.value.coloniaId;\r\n ubicacion.value.coloniaNombre = Colonia.value.colonia;\r\n ubicacion.value.estadoNombre = Colonia.value.estado;\r\n ubicacion.value.codigoPostalNombre = Colonia.value.codigoPostal;\r\n if (telParticular.value.valor === null) telParticular.value.valor = undefined;\r\n if (celParticular.value.valor === null) celParticular.value.valor = undefined;\r\n let rep = await api.Cliente.Cliente.HomeApi.ActualizarDatosCliente(\r\n telParticular.value.valor || \"\",\r\n celParticular.value.valor || \"\",\r\n emailParticular.value.valor || \"\",\r\n ubicacion.value.calle || \"\",\r\n ubicacion.value.numero || \"\",\r\n ubicacion.value.codigoPostalNombre || \"\",\r\n LadaPais.value,\r\n ubicacion.value.coloniaId as number\r\n );\r\n $store.agregarToast(rep.data);\r\n puedeEditarInformacion.value = false;\r\n cargarDatosClientes();\r\n div.style.display = \"none\";\r\n}\r\nfunction ObtenerDocumento(path: string): string {\r\n let URL =\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") + api.Cliente.Cliente.HomeApi.VerDocumentoUrl + \"?ruta=\";\r\n return URL + path;\r\n}\r\nasync function cargarIdentificacionOficial(event: any) {\r\n archivo.value = event.target.files[0];\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n let resp = null;\r\n for (let i = 0; i < event.target.files.length; i++) {\r\n resp = await api.Cliente.Cliente.HomeApi.GuardarIdentificacion(event.target.files[i], flag.value);\r\n NombreArchivoCargado.value = resp.data.data as string[];\r\n $store.agregarToast(resp.data);\r\n flag.value = false;\r\n }\r\n div.style.display = \"none\";\r\n}\r\nasync function cargarDatosClientes() {\r\n Paises.value = (await api.Cliente.Cliente.HomeApi.ListarPaises()).data;\r\n let res = (await api.Cliente.Cliente.HomeApi.ObtenerInformacionHome()).data;\r\n nombreCliente.value = res.nombreCompleto!;\r\n fechaCreacion.value = DateTime.fromISO(res.fechaCreacion.substring(0, 10)).toLocaleString({\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\"\r\n });\r\n ubicacion.value = res.ubicacion;\r\n telParticular.value = res.puntoContacto;\r\n celParticular.value = res.puntoContacto2;\r\n emailParticular.value = res.emailPersonal;\r\n beneficiarios.value = res.beneficiarios?.map(x => x.nombreCompleto) as string[];\r\n fileName.value = res.rutaIne!;\r\n puedeActualizarInformacion.value = res.puedeActualizarInformacion;\r\n puedeEditarInformacion.value = false;\r\n CodigoPostal.value = res.ubicacion.codigoPostalNombre!;\r\n flag.value = true;\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"none\";\r\n}\r\n//#endregion COMPUTED\r\nconst editarInformarPerfil = computed((): boolean => {\r\n return puedeEditarInformacion.value;\r\n});\r\n//#endregion\r\nformularioValidado.value = true;\r\nlet res = (await api.Cliente.Cliente.HomeApi.ObtenerInformacionHome()).data;\r\nnombreCliente.value = res.nombreCompleto!;\r\nfechaCreacion.value = DateTime.fromISO(res.fechaCreacion.substring(0, 10)).toLocaleString({\r\n year: \"numeric\",\r\n month: \"2-digit\",\r\n day: \"2-digit\"\r\n});\r\nPaises.value = (await api.Cliente.Cliente.HomeApi.ListarPaises()).data;\r\nubicacion.value = res.ubicacion;\r\nubicacion.value.pais ??= {} as Core.Models.Pais;\r\ntelParticular.value = res.puntoContacto;\r\ncelParticular.value = res.puntoContacto2;\r\nbeneficiarios.value = res.beneficiarios?.map(x => x.nombreCompleto) as string[];\r\nfileName.value = res.rutaIne!;\r\npuedeActualizarInformacion.value = res.puedeActualizarInformacion;\r\npuedeEditarInformacion.value = false;\r\nCodigoPostal.value = res.ubicacion.codigoPostalNombre!;\r\nflag.value = true;\r\n</script>\r\n","export default \"__VITE_ASSET__82dc2a07__\"","<template lang=\"pug\">\r\n.container(style=\"padding-left: 8%;\")\r\n .row.mt-2(style=\"padding-top: 25px; width: 100%; color: rgb(48, 45, 116); text-align: center; padding-bottom: 10px; \")\r\n h1\r\n label(style=\"padding-right: 5px;\") Si eres cliente, accede a tu cuenta en el portal\r\n label(style=\"color:#ffa000;\") HIR Casa\r\n.container.ff-poppins(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-5.mt-2\r\n .p-3.fw-bold.text-secondary.text-white.fs-5(style=\"background: #5935df; border-radius: 8px 8px 0 0\") LOGIN\r\n .card(style=\"border-radius: 0 0 8px 8px\"): .card-body\r\n .row.justify-content-center\r\n .col-8.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Correo Electrónico\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n v-model=\"LoginUser.correo.value\"\r\n required\r\n pattern=\"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Correo Electrónico invalido.\r\n .col-8.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Contraseña\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n v-model=\"LoginUser.password.value\"\r\n required\r\n :pattern=\"patronPassword\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Contraseña invalido.\r\n .col-8.text-center.mt-4\r\n router-link.fw-bold(:to=\"{ name: 'cliente-cliente-usuario-recuperacion' }\" style=\"color: #ffa000\") ¿Has Olvidado tu Contraseña?\r\n .col-8.text-center.mt-4\r\n form.text-center(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"autentificarUsuario()\"): button.btn.btn-primary.text-white.px-5.fw-bold(\r\n style=\"border-radius: 20px; background: #ffa000\"\r\n ) Entrar\r\n .col-8.text-center.mt-4\r\n router-link.fw-bold(:to=\"{ name: 'cliente-cliente-usuario-crear' }\" style=\"color: #ffa000\") Soy Usuario Nuevo\r\n .col-md-6.mt-2.offset-md-1\r\n img.img-fluid.img-fluid(src=\"../assets/bg.png\" alt=\"Responsive image\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { ref, reactive, toRefs, toRaw } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { EstadoRespuesta, Core } from \"@/servicios/api\";\r\nimport { useRouter } from \"vue-router\";\r\nimport Swal from \"sweetalert2\";\r\nimport { useStore } from \"@/store\";\r\nimport { useStore as useClienteClienteStore } from \"../store\";\r\nconst $router = useRouter();\r\n\r\n//#region Data\r\nconst store = useClienteClienteStore();\r\nconst $store = useStore();\r\nconst patronPassword = \"[^'\\\"\\ ]+\";\r\nconst formularioValidado = ref(false);\r\nconst reactiveLoginUser = reactive({\r\n numContrato: \"\",\r\n correo: \"\",\r\n password: \"\",\r\n estatus: Core.Enums.EstatusAlta.Activo\r\n} as Core.Models.AltaUsuario);\r\nconst LoginUser = toRefs(reactiveLoginUser);\r\nconst contador = ref(0);\r\nconst formDom = ref(null as HTMLFormElement | null);\r\n//#endregion\r\n\r\n//#region Methods\r\n\r\nasync function autentificarUsuario() {\r\n contador.value += 1;\r\n formularioValidado.value = true;\r\n let valido = formDom.value!.checkValidity();\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n if (contador.value > 3) {\r\n if (contador.value > 4) return;\r\n LoginUser.estatus.value = Core.Enums.EstatusAlta.Recuperacion_Automatica;\r\n let resc = await api.Cliente.Cliente.HomeApi.SolicitudCambioContrasenia(toRaw(reactiveLoginUser));\r\n $store.agregarToast(resc.data);\r\n return;\r\n }\r\n const res = await api.Cliente.Cliente.HomeApi.Login({\r\n correo: LoginUser.correo?.value!,\r\n contrasenia: LoginUser.password?.value!\r\n });\r\n if (res.data.estado == EstadoRespuesta.OK) {\r\n gtag(\"event\", \"login\");\r\n $router.push({ name: \"cliente-cliente-home\" });\r\n store.sesionIniciada = true;\r\n store.clienteAceptaTerminosCondicionesAvisoPrivacidad = res.data.aceptaTerminosCondicionesAvisoPrivacidad ?? false;\r\n sessionStorage.setItem(\"seguirMostrandoBannerCampania\", \"true\");\r\n } else if (res.data.estado == EstadoRespuesta.INFO) {\r\n Swal.fire({\r\n icon: \"error\",\r\n showCloseButton: true,\r\n showConfirmButton: false,\r\n html: `\r\n <p class=\"fw-bold\" style=\"color: #2f2d74; font-size: 14px;\"> Estimado cliente:</p>\r\n <p class=\"fw-bold\" style=\"color: #2f2d74; font-size: 14px;\"> Por el momento no es posible ingresar a tu cuenta.</p>\r\n <p style=\"font-size: 12px\"> Es importante que te comuniques por cualquiera de los siguientes medios para mayor información:</p>\r\n <table style=\"width:100%\">\r\n <tr>\r\n <td style=\"width:50%\">\r\n <p style=\"font-size: 12px\">Correo: <span class=\"fw-bold\" style=\"color: #2f2d74; font-size: 12px;\"> fperez@hircasa.com.mx</span></p>\r\n </td>\r\n <td style=\"width:50%\">\r\n <p style=\"font-size: 12px\">Domicilio: <span class=\"fw-bold\" style=\"color: #2f2d74; font-size: 12px;\" colspan=\"2\"> Desierto de los Leones No. 46, Nivel 1, Col San Ãngel, Alvaro Obregón, CP 01000, Ciudad de México.</span></p>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td style=\"width:50%\">\r\n <p style=\"font-size: 12px\">Teléfono: <span class=\"fw-bold\" style=\"color: #2f2d74; font-size: 12px;\"> 555511 9910 ext. 6277</span></p>\r\n </td>\r\n <td></td>\r\n </tr>\r\n <tr>\r\n <td style=\"width:50%\">\r\n <p style=\"font-size: 12px\">Whatsapp: <span class=\"fw-bold\" style=\"color: #2f2d74; font-size: 12px;\"> 557665 9885 Opción 3</span></p>\r\n </td>\r\n <td style=\"width:50%\">\r\n <p style=\"font-size: 12px\">Horario de Atención: <span class=\"fw-bold\" style=\"color: #2f2d74; font-size: 12px;\"> Lunes a Viernes de 09:00 a 18:00 hrs.</span></p>\r\n </td>\r\n </tr>\r\n </table>\r\n `\r\n });\r\n } else {\r\n $store.agregarToast(res.data);\r\n }\r\n}\r\n//#endregion\r\n\r\nconst res2 = (await api.Cliente.Cliente.HomeApi.Ping()).data;\r\nif (res2) $router.push({ name: \"cliente-cliente-home\" });\r\n</script>\r\n","<template lang=\"pug\">\r\n.timeline\r\n .progress(:style=\"{ width: progress + '%' }\")\r\n .items\r\n .item(v-for=\"(item, i) in items\" :key=\"item\" :class=\"{ active: (100 / ((items || { length: 0 }).length - 1)) * i - progress <= 0.01 }\")\r\n .content {{ item }}\r\n</template>\r\n\r\n<style lang=\"scss\" scoped>\r\n.timeline {\r\n margin: 50px 60px;\r\n height: 4px;\r\n background-color: #6e7599;\r\n\r\n .progress {\r\n height: 100%;\r\n background-color: #eb8113;\r\n }\r\n\r\n .items {\r\n margin-left: -10px;\r\n margin-right: -10px;\r\n margin-top: -12px;\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .item {\r\n position: relative;\r\n\r\n &.active {\r\n &::before {\r\n background-color: #eb8113;\r\n }\r\n\r\n .content {\r\n font-weight: bold;\r\n color: #eb8113;\r\n\r\n &::before {\r\n content: \"\";\r\n width: 10px;\r\n height: 10px;\r\n background-color: #fff;\r\n display: block;\r\n position: absolute;\r\n top: -10px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n border-radius: 100%;\r\n }\r\n }\r\n }\r\n\r\n &::before {\r\n content: \"\";\r\n width: 20px;\r\n height: 20px;\r\n background-color: #6e7599;\r\n display: block;\r\n border-radius: 100%;\r\n }\r\n\r\n .content {\r\n position: absolute;\r\n top: 15px;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n // background-color: #ddd;\r\n width: 100px;\r\n padding: 5px 10px;\r\n border-radius: 5px;\r\n text-align: center;\r\n font-size: 75%;\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nconst props = defineProps({\r\n items: Array as () => string[],\r\n progress: Number\r\n});\r\n\r\nconst items = props.items!;\r\n</script>\r\n","import type { ComponentOptionsMixin } from \"vue\";\r\n\r\nexport default {\r\n methods: {\r\n filtroDivisa(numero: number, currency: string = \"MXN\"): string {\r\n if (numero == undefined || numero == null) return \"\";\r\n return new Intl.NumberFormat(\"es-MX\", { style: \"currency\", currency: currency }).format(numero);\r\n }\r\n }\r\n} as ComponentOptionsMixin;\r\n","import type { ComponentOptionsMixin } from \"vue\";\r\n\r\nconst mix: ComponentOptionsMixin = {\r\n data: () => ({\r\n componentId: \"a\" + Math.random().toString(36).substring(7) + Math.random().toString(36).substring(7)\r\n })\r\n};\r\n\r\nexport default mix;\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pb-4(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2\r\n .col.mt-2.h6(style=\"text-align: justify; margin: 0 60px 0 -60px; width: 800px\")\r\n p.h1.fw-bold(style=\"color: #34189a\") Seguro de Vida\r\n .col-md-12.mt-5\r\n p(style=\"color: #6e7599\") La solidez de una empresa como \r\n span.text-primary.fw-bold HIR Casa \r\n | se refleja, entre otras cosas, en la capacidad de brindar a sus clientes la tranquilidad de contar con el respaldo de una compañÃa de seguros perteneciente al mismo grupo.\r\n .col-md-12.mt-4\r\n p(style=\"color: #6e7599\") Esta compañÃa ofrece a los clientes de \r\n span.text-primary.fw-bold HIR Casa \r\n | un seguro de vida.\r\n .col-md-12.mt-4\r\n p(style=\"color: #6e7599\") Por el hecho de brindarnos su confianza y contratar su financiamiento con \r\n span.text-primary.fw-bold HIR Casa \r\n | , \r\n span.fw-bold usted queda automáticamente cubierto con el seguro de vida \r\n | con \r\n span.text-primary.fw-bold HIR COMPAÑÃA DE SEGUROS, S.A. DE C.V. \r\n p.mt-5.fs-5.fw-bold(style=\"color: #34189a\") Requisitos:\r\n p(style=\"color: #6e7599\")\r\n span.fw-bold Cuestionario médico\r\n | , que será evaluado por la compañÃa de seguros para la autorización.\r\n p(style=\"color: #6e7599\"): span.fw-bold Los requisitos médicos son obligatorios y la cobertura se encuentra condicionada al cumplimento oportuno de los mismos.\r\n p(style=\"color: #6e7599\") De no cumplir con los requisitos médicos que se solicitan, de acuerdo con la Suma Asegurada, la cobertura del seguro será cancelada en forma inmediata. En los contratos bajo el esquema de coacreditado, las condiciones de cobertura y selección aplicarán para cada acreditado por separado.\r\n p(style=\"color: #6e7599\")\r\n span.fw-bold Con el seguro de vida está cubierto hasta el monto del valor actual del contrato \r\n | (como integrante y adjudicatario) \r\n span.fw-bold o el saldo insoluto \r\n | (como adjudicado).\r\n .col-md-6.mt-3(style=\"margin-right: -50px\")\r\n p.h2.fw-bold(style=\"color: #34189a\") Mi Seguro\r\n .card.mt-2: .card-body\r\n .row: .col-12.rounded-pill.shadow\r\n c-c-timeline(:items=\"timeline.items\" :progress=\"timeline.progress\")\r\n //timeline(:items=\"timeline.items\" :progress=\"timeline.progress\")\r\n .row\r\n .col-md-12.mt-2(style=\"background-color: #5935df; padding: 10px 10px 0 10px\")\r\n button(\r\n @click.prevent=\"cambiarPestania('Cliente')\"\r\n :class=\"pestania == 'Cliente' ? '' : ''\"\r\n style=\"background-color: #5935df; color: white; margin: 0 0 0 50px; width: 100px; height: 35px; font-weight: 600; border: none; border-radius: 5px 5px 0 0\"\r\n :style=\"pestania == 'Cliente' ? 'background-color: white; color: #5935df;' : ''\"\r\n ) Cliente\r\n button(\r\n v-if=\"cotitulares.length > 0 ? true : false\"\r\n @click.prevent=\"cambiarPestania('Cotitular')\"\r\n style=\"background-color: #5935df; color: white; margin-left: 30px; width: 100px; height: 35px; font-weight: 600; border: none; border-radius: 5px 5px 0 0\"\r\n :style=\"pestania == 'Cotitular' ? 'background-color: white; color: #5935df;' : ''\"\r\n ) Cotitular\r\n .row\r\n .col-md-4.mt-4: p.fw-bold(style=\"color: #34189a\" v-if=\"pestania == 'Cotitular' ? true : false\") Cotitulares\r\n .col-md-6.mt-4(style=\"margin: 10px 0\")\r\n select.form-select(\r\n v-if=\"pestania == 'Cotitular' ? true : false\"\r\n v-model=\"cotitular\"\r\n style=\"width: 340px; border-radius: 15px; padding: 5px 10px 5px 10px\"\r\n )\r\n option(v-for=\"(cotitular, index) in cotitulares\" :key=\"index\" :value=\"cotitular\") {{ cotitular.nombreCompleto }}\r\n .row\r\n .col-md-4: p.fw-bold(style=\"color: #34189a\") Coberturas\r\n .col-md-6: select.form-select(v-model=\"estatusTramite\" style=\"width: 340px; border-radius: 15px; padding: 5px 10px 5px 10px\")\r\n option(v-for=\"(estatus, index) in estatusTramites\" :key=\"index\" :value=\"estatus\") {{ estatus?.nombreDictamen }}\r\n p.fw-bold.text-muted {{ coberturas() }}\r\n hr\r\n .col-md-12: p.fw-bold(style=\"color: #34189a\") Contratos\r\n .col-md-12: p.text-muted {{ numerosContratos }}\r\n p(style=\"text-decoration: underline\") * Aplica Restricciones\r\n hr\r\n .row\r\n .col-md-4.mt-2: p.text-muted Prima Mensual\r\n .col-md-4.mt-2: p.text-center(style=\"color: #34189a\") {{ seguroVida.primaMensual }} %\r\n .col-md-4.mt-2: p.text-center(style=\"color: #34189a\") {{ filtroDivisa(seguroVida.cantidadPrimaMensal) }}\r\n hr\r\n p.fw-bold(style=\"color: #34189a\") Documentos\r\n //-a.text-decoration-none(:href=\"mostrarDocumentoAnexo(120)\" target=\"_blank\") Hola\r\n table.w-100: tbody\r\n tr(v-for=\"doc in documentos.filter((d) => d.disponible)\")\r\n td(style=\"width: 60%\") {{ doc.nombreDocumento }}\r\n td(style=\"width: 20%\")\r\n a.text-decoration-none(:href=\"obtenerUrlDocumento(doc.metodo || '', doc.parametros)\" target=\"_blank\")\r\n span.fas.fa-eye.ms-2.text-decoration-none(style=\"color: #eb8113\")\r\n td.text-danger(v-if=\"obtenerTextoVigencia(doc)\" style=\"width: 20%\") {{ obtenerTextoVigencia(doc) }}\r\n p.fw-bold(v-if=\"documentos.length == 0 ? true : false\") No se han cargado Documentos.\r\n hr\r\n p.fw-bold(style=\"color: #34189a\") Documentos Anexos\r\n table.w-100: tbody\r\n tr(v-for=\"(docAnexon, index) in documentoAnexo\" :key=\"index\")\r\n td(style=\"width: 60%\") {{ docAnexon.nombreDocumento }}\r\n td(style=\"width: 20%\")\r\n a.text-decoration-none(:href=\"mostrarDocumentoAnexo(docAnexon)\" target=\"_blank\")\r\n span.fas.fa-eye.ms-2.text-decoration-none(style=\"color: #eb8113\")\r\n p.fw-bold(v-if=\"documentoAnexo.length == 0 ? true : false\") No se han cargado Documentos Anexos.\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nimport CCTimeline from \"../components/CCTimeline.vue\";\r\nimport mixinFiltros from \"@/mixins/filtros\";\r\nimport mixinId from \"@/mixins/componentId\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { Core, Cliente } from \"@/servicios/api\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport default defineComponent({\r\n mixins: [mixinFiltros, mixinId],\r\n components: { CCTimeline },\r\n data() {\r\n return {\r\n numerosContratos: \"\",\r\n pestania: \"Cliente\",\r\n estatusTramite: {\r\n tramiteSeguroId: 0,\r\n estatus: Core.Enums.EstatusTramiteSeguro.EN_TRAMITE\r\n } as Pick<\r\n {\r\n [k in keyof Cliente.Cliente.Seguro.TramiteSeguro]: NonNullable<Cliente.Cliente.Seguro.TramiteSeguro[k]>;\r\n },\r\n \"tramiteSeguroId\" | \"estatus\" | \"folioRecepcion\"\r\n > | null,\r\n contratos: [] as string[],\r\n estatusTramites: [] as Cliente.Cliente.Seguro.TramiteSeguro[],\r\n cotitulares: [] as Core.Models.PersonaFisica[],\r\n actor: 0,\r\n cotitular: {} as Core.Models.PersonaFisica | null,\r\n formularioValidado: false,\r\n timeline: {\r\n items: [\"Solicitud\", \"Revisión\", \"Dictamen\", \"Certificado\"],\r\n progress: 0\r\n },\r\n documentoAnexo: [] as Cliente.Cliente.Seguro.DocumentoSeguro[],\r\n seguroVida: {\r\n tipoActor: \" \",\r\n detalleCobertura: \"Detalle de tus Coberturas\",\r\n primaMensual: 0,\r\n cantidadPrimaMensal: 0,\r\n primaActiva: true,\r\n primaCotitular: 2.5,\r\n cantidadCotitular: 250,\r\n cotitularActiva: false,\r\n beneficiarios: [] as any[],\r\n urlConsentimientoMedico:\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.SeguroApi.ObtenerConsentimientoMedicoUrl\r\n },\r\n documentos: [] as Cliente.Cliente.Seguro.DocumentoSeguro[]\r\n };\r\n },\r\n watch: {\r\n cotitular: function (value: any) {\r\n let EntidadID = 0;\r\n if (this.cotitular != undefined || this.cotitular != null) {\r\n this.seguroVida.primaMensual = 0;\r\n this.seguroVida.cantidadPrimaMensal = 0;\r\n EntidadID = value.personaFisicaId;\r\n }\r\n api.Cliente.Cliente.SeguroApi.ObtenerTramiteSeguro(EntidadID).then((d) => {\r\n if (d.data.length > 0) {\r\n this.estatusTramites = d.data;\r\n this.estatusTramite = this.estatusTramites.length > 0 ? this.estatusTramites[0] : null;\r\n }\r\n this.estatusTramite = null;\r\n });\r\n },\r\n estatusTramite: function (value: any) {\r\n this.estatusTramite = value;\r\n if (this.estatusTramite == null) return;\r\n this.timeline.progress = 0;\r\n this.seguroVida.cantidadPrimaMensal = 0;\r\n this.seguroVida.primaMensual = 0;\r\n this.documentos = [];\r\n this.contratos = [];\r\n this.numerosContratos = \"\";\r\n // Obtener Linea de Vida Dictamen\r\n api.Cliente.Cliente.SeguroApi.ObtenerLineaVidaSeguro(this.estatusTramite.tramiteSeguroId).then((d) => {\r\n this.timeline.items = [];\r\n let items = [] as string[];\r\n d.data.etapas?.forEach(function (elemento, indice, array) {\r\n items.push(elemento.toString().replace(/_/g, \" \"));\r\n });\r\n this.timeline.items = items;\r\n this.timeline.progress = d.data.progreso;\r\n });\r\n //Obtener Prima Mensual\r\n api.Cliente.Cliente.SeguroApi.ObtenerPagoPrima(this.estatusTramite.tramiteSeguroId).then((resp) => {\r\n this.seguroVida.cantidadPrimaMensal = resp.data.valorPrima;\r\n this.seguroVida.primaMensual = resp.data.porcentajePrima;\r\n });\r\n //Obtener Documentos\r\n api.Cliente.Cliente.SeguroApi.ObtenerListaDocumentos(this.estatusTramite.tramiteSeguroId).then((d2) => {\r\n this.documentos = d2.data;\r\n });\r\n api.Cliente.Cliente.SeguroApi.ObtenerDocumentoAnexo(this.estatusTramite.tramiteSeguroId).then((respAnexo) => {\r\n this.documentoAnexo = respAnexo.data;\r\n });\r\n //Obtener Contratos\r\n api.Cliente.Cliente.SeguroApi.ContratosTramiteSeguro(this.estatusTramite.tramiteSeguroId).then((resp) => {\r\n for (let contrato of resp.data) {\r\n this.contratos.push(contrato.numeroCompleto!);\r\n }\r\n this.numerosContratos = this.contratos.join(\", \");\r\n });\r\n }\r\n },\r\n methods: {\r\n cambiarPestania(value: any) {\r\n this.pestania = value;\r\n if (value == \"Cotitular\") {\r\n api.Cliente.Cliente.SeguroApi.ObtenerCotitulares().then((d) => {\r\n this.cotitulares = d.data;\r\n this.cotitular = this.cotitulares.length > 0 ? this.cotitulares[0] : null;\r\n });\r\n } else {\r\n api.Cliente.Cliente.SeguroApi.ObtenerTramiteSeguro(0).then((res) => {\r\n this.estatusTramites = res.data;\r\n this.estatusTramite = this.estatusTramites.length > 0 ? this.estatusTramites[0] : null;\r\n });\r\n }\r\n },\r\n cambiarEsatusTramite(index: number) {\r\n this.cotitular = this.cotitulares.length > 0 ? this.cotitulares[index] : null;\r\n },\r\n coberturas(): string {\r\n if (\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.ACEPTADO_EN_SU_TOTALIDAD ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.EXTRAPRIMADO\r\n )\r\n return \"Vida - Invalidez - Desempleo\";\r\n if (\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.CANCELACIÓN ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.CANCELADO_POR_CESIÓN_DERECHOS ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.CESIÓN_DERECHOS ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.ELIMINADO\r\n )\r\n return \"N/A\";\r\n if (\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.EN_TRAMITE ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.PENDIENTE ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.PENDIENTE_DE_DICTAMEN ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.RECONSIDERACIÓN_ASEGURADORA ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.REQUIERE_INFORMACION_ADICIONAL\r\n )\r\n return \"En Trámite\";\r\n if (\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.RECHAZADO_EN_INVALIDEZ\r\n )\r\n return \"Vida - Desempleo\";\r\n if (\r\n this.estatusTramite?.estatus ==\r\n Core.Enums.EstatusTramiteSeguro.EXTRAPRIMADO_Y_RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.RECHAZADO_EN_INVALIDEZ_Y_SEG_DESEMPLEO\r\n )\r\n return \"Vida\";\r\n if (\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.EXTRAPRIMADO_Y_RECHAZADO_EN_SEG_DESEMPLEO ||\r\n this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.RECHAZADO_EN_SEG_DESEMPLEO\r\n )\r\n return \"Vida - Invalidez\";\r\n if (this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.RECHAZADO_EN_SU_TOTALIDAD) return \"Rechazado\";\r\n if (this.estatusTramite?.estatus == Core.Enums.EstatusTramiteSeguro.REQUIERE_EXAMEN_MEDICO)\r\n return \"Examen Médico\";\r\n return \"\";\r\n },\r\n obtenerUrlDocumento(metodo: string, parametros?: { [key: string]: string }): string {\r\n let parametrosString = \"\";\r\n if (parametros != undefined)\r\n parametrosString =\r\n \"?\" +\r\n Object.keys(parametros)\r\n .map((key) => key + \"=\" + encodeURIComponent(parametros[key]))\r\n .join(\"&\");\r\n let base = (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\");\r\n if (metodo == \"ObtenerConsentimientoMedico\")\r\n return base + api.Cliente.Cliente.SeguroApi.ObtenerConsentimientoMedicoUrl;\r\n return base + api.Cliente.Cliente.SeguroApi.ObtenerDocumentoUrl + parametrosString;\r\n },\r\n mostrarDocumentoAnexo(ID: any): string {\r\n let URL =\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.SeguroApi.ObtenerArchivoAnexoUrl +\r\n \"?token=\";\r\n return URL + ID.metodo;\r\n },\r\n obtenerTextoVigencia(documento: Cliente.Cliente.Seguro.DocumentoSeguro): string {\r\n // Solo aplica para el pase médico en seguros en trámite\r\n if (documento.tipoDocumento != Core.Models.TipoDocumentoTramiteSeguro.PASE_MÉDICO) return \"\";\r\n if (!documento.disponible) return \"\";\r\n if (this.coberturas() != \"En Trámite\") return \"\";\r\n let diferencia = DateTime.now().diff(DateTime.fromISO(documento.fechaCarga!.substring(0, 19)), [\r\n \"day\",\r\n \"hour\"\r\n ]).days;\r\n if (diferencia > 30) return `Expirado. Contácte a su Asesor.`;\r\n if (diferencia >= 23)\r\n return `Expira en ${31 - diferencia} dÃa${31 - diferencia > 1 ? \"s\" : \"\"}. Contácte a su Asesor`;\r\n return \"\";\r\n }\r\n },\r\n async mounted() {\r\n // Cotitulares del Cliente\r\n this.cotitulares = (await api.Cliente.Cliente.SeguroApi.ObtenerCotitulares()).data;\r\n //Obtener Lista de Dictamenes\r\n let res = await api.Cliente.Cliente.SeguroApi.ObtenerTramiteSeguro(0);\r\n this.estatusTramites = res.data;\r\n this.estatusTramite = this.estatusTramites.length > 0 ? this.estatusTramites[0] : null;\r\n }\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-5.mt-2\r\n .p-3.text-secondary.text-white.fs-5.fw-bold(style=\"background: #5935df; border-radius: 8px 8px 0 0\") CREA TU CUENTA\r\n .card(style=\"border-radius: 0 0 8px 8px\"): .card-body\r\n form(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"crearUsuario()\"): .row.justify-content-center\r\n .col-12.mt-2\r\n a.fw-bold.text-primary(href=\"/login\" @click.prevent=\"$router.push({ name: 'cliente-cliente-login' })\") Regresar\r\n .col-8.mt-2\r\n label.form-label.fw-bold(style=\"color: #2f2d74\") No. Contrato\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n v-model=\"LoginUser.numContrato.value\"\r\n required\r\n pattern=\"[/0-9]+\"\r\n style=\"border-radius: 90px\"\r\n placeholder=\"Ejemplo: 01234567/89\"\r\n )\r\n .invalid-feedback No. Contrato invalido.\r\n .col-8.mt-2\r\n label.form-label.fw-bold(style=\"color: #2f2d74\") Correo Electrónico\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n required\r\n v-model=\"LoginUser.correo.value\"\r\n pattern=\"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$\"\r\n style=\"border-radius: 90px\"\r\n placeholder=\"Ejemplo: usuario@dominio.com\"\r\n )\r\n .invalid-feedback Correo Electrónico Invalido.\r\n .col-8.mt-2\r\n label.form-label.fw-bold(style=\"color: #2f2d74\") Contraseña\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n required\r\n v-model=\"LoginUser.contrasenia.value\"\r\n :pattern=\"patronPassword\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Contraseña inválida.\r\n .col-8.mt-2\r\n label.form-label.fw-bold(style=\"color: #2f2d74\") Confirmar Contraseña\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"Password\"\r\n v-model=\"RepPassword\"\r\n required\r\n :pattern=\"patronPassword\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Contraseña inválida.\r\n .col-8.text-center.mt-2\r\n button.btn.btn-primary.text-white.px-5.fw-bold Crear\r\n //-button(class=\"btn btn-primary text-white\" type=\"submit\" @click=\"crearUsuario()\") CREAR\r\n .col-md-6.mt-2.offset-md-1\r\n img.img-fluid(src=\"../assets/bg.png\" alt=\"Responsive image\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { ref, toRefs, reactive, toRaw, computed } from \"vue\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { Cliente, EstadoRespuesta } from \"@/servicios/api\";\r\nimport { useStore } from \"@/store\";\r\nimport { useRouter } from \"vue-router\";\r\n\r\nconst $router = useRouter();\r\nconst componentId = utilidades.generarId();\r\nconst patronPassword = \"[^'\\\" ]+\";\r\n\r\nconst $store = useStore();\r\nconst formDom = ref(null as HTMLFormElement | null);\r\nconst formularioValidado = ref(false);\r\nconst RepPassword = ref(\"\");\r\nconst reactiveLoginUser = reactive({\r\n numContrato: \"\",\r\n correo: \"\",\r\n contrasenia: \"\",\r\n aceptarAvisoTerminos: false,\r\n canal: 1\r\n});\r\nconst LoginUser = toRefs(reactiveLoginUser);\r\nconst CorreoUpperCase = computed(() => {\r\n return LoginUser.correo.value.toUpperCase();\r\n});\r\nasync function crearUsuario() {\r\n formularioValidado.value = true;\r\n let valido = formDom.value!.checkValidity();\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n reactiveLoginUser.correo = CorreoUpperCase.value;\r\n if (RepPassword.value == LoginUser.contrasenia.value) {\r\n let res = await api.Cliente.Cliente.HomeApi.RegistrarUsuario(toRaw(reactiveLoginUser));\r\n $store.agregarToast(res.data);\r\n if (res.data.estado == EstadoRespuesta.OK) {\r\n gtag(\"event\", \"sign_up\");\r\n $router.push({ name: \"cliente-cliente-login\" });\r\n }\r\n }\r\n}\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pt-2(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row\r\n .col-md-5\r\n .p-3.fw-bold.text-secondary.text-white.fs-5(style=\"background: #5935df; border-radius: 8px 8px 0 0\") RECUPERACIÓN DE CONTRASEÑA\r\n .card: .card-body\r\n .row.justify-content-center\r\n .col-10.mt-4\r\n router-link.fw-bold.text-primary.text-primary(:to=\"{ name: 'cliente-cliente-login' }\") Regresar\r\n .col-10.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Ingresa tu Correo Electrónico Registrado\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n required\r\n v-model=\"LoginUser.correo.value\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Correo Electrónico invalido.\r\n .col-8.text-center.mt-4\r\n form.text-center(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"ActualizarPasswordCorreo()\"): button.btn.btn-primary.text-white.px-5.fw-bold Enviar\r\n //-input(class=\"btn btn-primary text-white\" type=\"submit\" value=\"Enviar\" @click=\"ActualizarPasswordCorreo()\")\r\n .col-8.text-center.mt-4\r\n router-link.fw-bold.text-primary(:to=\"{ name: 'cliente-cliente-usuario-crear' }\") ¿Necesitas Ayuda?\r\n //-.col-8.text-center.mt-4\r\n b.text-primary.text-success Se ha enviado una liga a correo@gmail.com con la información para recuperar tu acceso.\r\n br\r\n input.mt-2(class=\"btn btn-primary text-white\" type=\"submit\" value=\"Regresar\")\r\n .col-md-6.offset-md-1\r\n img.img-fluid(src=\"../assets/bg.png\" alt=\"Responsive image\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, toRefs, reactive, toRaw } from \"vue\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { EstadoRespuesta, Core } from \"@/servicios/api\";\r\nimport { useStore } from \"@/store\";\r\nimport { useRouter } from \"vue-router\";\r\nimport * as utilidades from \"@/utilidades\";\r\n\r\n//#region Data\r\nconst $router = useRouter();\r\nconst $store = useStore();\r\nconst componentId = utilidades.generarId();\r\nconst formDom = ref(null as HTMLFormElement | null);\r\nconst formularioValidado = ref(true);\r\nconst reactiveLoginUser = reactive({\r\n correo: \"\",\r\n estatus: Core.Enums.EstatusAlta.Activo\r\n} as Core.Models.AltaUsuario);\r\nconst LoginUser = toRefs(reactiveLoginUser);\r\n\r\n//#endregion\r\n\r\n//#region Methods\r\nasync function ActualizarPasswordCorreo() {\r\n let valido = formDom.value!.checkValidity();\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n let res = await api.Cliente.Cliente.HomeApi.SolicitudCambioContrasenia(toRaw(reactiveLoginUser));\r\n $store.agregarToast(res.data);\r\n if (res.data.estado == EstadoRespuesta.OK) $router.push({ name: \"cliente-cliente-login\" });\r\n}\r\n//#endregion\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-5.mt-2\r\n .p-3.fw-bold.text-secondary.text-white.fs-5(style=\"background: #5935df; border-radius: 8px 8px 0 0\") RECUPERACIÓN DE CONTRASEÑA\r\n .card(style=\"border-radius: 0 0 8px 8px\"): .card-body\r\n .row.justify-content-center\r\n .col-8.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Nueva Contraseña\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"password\"\r\n required\r\n v-model=\"actualizarCliente.passwordNueva.value\"\r\n :pattern=\"patternPassword\"\r\n )\r\n .invalid-feedback Contraseña Invalido.\r\n .col-8.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Confirmar Nueva Contraseña\r\n input.form-control(:form=\"componentId + 'form'\" type=\"password\" required v-model=\"actualizarCliente.repPassword.value\" :pattern=\"patternPassword\")\r\n .invalid-feedback Contraseña Invalido.\r\n .col-8.text-center.mt-4\r\n form.text-center(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"actualizarPassword()\"): button.btn.btn-primary.text-white.px-5.fw-bold(\r\n style=\"border-radius: 20px; background: #ffa000\"\r\n ) Confirmar\r\n //-input(class=\"btn btn-primary text-white\" type=\"submit\" value=\"Confirmar\" @click=\"actualizarPassword()\")\r\n .col-md-6.mt-2.offset-md-1\r\n img.img-fluid(src=\"../assets/bg.png\" alt=\"Responsive image\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, toRefs, reactive, toRaw } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { Core, EstadoRespuesta, Cliente } from \"@/servicios/api\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStore } from \"@/store\";\r\nimport * as utilidades from \"@/utilidades\";\r\n\r\n//#region Data\r\nconst $router = useRouter();\r\nconst $store = useStore();\r\nconst patternPassword = \"[^'\\\" ]+\";\r\nconst componentId = utilidades.generarId();\r\nconst formDom = ref(null as HTMLFormElement | null);\r\nconst formularioValidado = ref(true);\r\nconst reactiveActualizarCliente = reactive({\r\n clienteId: 0,\r\n passwordActual: \"\",\r\n passwordNueva: \"\",\r\n repPassword: \"\",\r\n estatus: Core.Enums.EstatusSesion.Recuperacion_Automatica\r\n} as Cliente.Cliente.ActualizarAltaCliente);\r\nconst actualizarCliente = toRefs(reactiveActualizarCliente);\r\nconst token = ref(\"\");\r\n//#endregion\r\n\r\n//#region Methods\r\nasync function actualizarPassword() {\r\n let valido = formDom.value!.checkValidity();\r\n if (!valido) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\"\r\n });\r\n return;\r\n }\r\n actualizarCliente.estatus.value = Core.Enums.EstatusSesion.Recuperacion_Automatica;\r\n let res = await api.Cliente.Cliente.HomeApi.ActualizarContrasenia(token.value, toRaw(reactiveActualizarCliente));\r\n $store.agregarToast(res.data);\r\n if (res.data.estado == EstadoRespuesta.OK) $router.push({ name: \"cliente-cliente-login\" });\r\n}\r\n//#endregion\r\n\r\ntoken.value = $router.currentRoute.value.query[\"token\"] as string;\r\n</script>\r\n","export default \"/cliente/cliente/img/home-banner-2024.png\"","export default \"__VITE_ASSET__5b4a6def__\"","export default \"__VITE_ASSET__ae30a98b__\"","export default \"__VITE_ASSET__d9b4ea9e__\"","export default \"__VITE_ASSET__e482621d__\"","export default \"__VITE_ASSET__28bc92c9__\"","export default \"__VITE_ASSET__f225f26a__\"","export default \"__VITE_ASSET__66038099__\"","export default \"__VITE_ASSET__7895ca22__\"","export default \"__VITE_ASSET__fb643ce1__\"","export default \"__VITE_ASSET__4495cb63__\"","export default \"__VITE_ASSET__1f90ca0e__\"","<template lang=\"pug\">\r\n.container.ff-poppins.py-3\r\n .row\r\n .col-md-12.text-center(v-if=\"banners.length\")\r\n //- Galeria HirCasa\r\n .carousel.slide.d-inline-block(data-ride=\"carousel\" style=\"width: 600px; height: 250px; max-width: 100%\" :id=\"componentId + 'banners'\")\r\n .carousel-indicators(v-if=\"banners.length > 1\")\r\n button.active(\r\n v-for=\"(item, i) in banners\"\r\n type=\"button\"\r\n :class=\"{ active: i == 0 }\"\r\n :data-bs-target=\"'#' + componentId + 'banners'\"\r\n :data-bs-slide-to=\"i\"\r\n )\r\n .carousel-inner: .carousel-item(v-for=\"(item, i) in banners\" :class=\"{ active: i == 0 }\")\r\n a(:href=\"item.linkUrl\" target=\"_blank\")\r\n img.d-block.w-100.img-rounded(alt=\"Slide\" :src=\"item.bannerUrl\" width=\"600\" height=\"250\")\r\n template(v-if=\"banners.length > 1\")\r\n button.carousel-control-prev(type=\"button\" :data-bs-target=\"'#' + componentId + 'banners'\" data-bs-slide=\"prev\")\r\n span.carousel-control-prev-icon\r\n span.visually-hidden Anterior\r\n button.carousel-control-next(type=\"button\" :data-bs-target=\"'#' + componentId + 'banners'\" data-bs-slide=\"next\")\r\n span.carousel-control-next-icon\r\n span.visually-hidden Siguiente\r\n .col-md-6\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") Hola, \r\n span.text-primary {{ $store.nombrePilaCliente }}\r\n p.fs-5(style=\"color: #6e7599\") Este es el Portal Cliente donde tienes acceso a tu \r\n span.text-primary.fw-bold información general\r\n | , a tus \r\n span.text-primary.fw-bold estados de cuenta\r\n |  y a otras \r\n span.text-primary.fw-bold funcionalidades\r\n |  que estamos desarrollando para tu comodidad.\r\n .text-center: img.border.border-1.shadow(src=\"/cliente/cliente/img/home-banner-2024.png\" style=\"border-radius: 1rem; max-width: 100%\")\r\n .row: .col-md-12.mt-2: .card: .card-body(style=\"background: #492fe5; padding: 16px 26px; border-bottom: #95a7d6 1px solid; border-radius: 8px 8px 8px 8px\")\r\n .row\r\n .col-md-12.mt-2.d-flex.justify-content-center: select.form-select.rounded-pill(:form=\"componentId + 'form'\" v-model=\"contratoSeleccionado\")\r\n option(v-for=\"item in listaContratos\" :value=\"item\") {{ item.numeroContrato }}\r\n .col-md-12.mt-2.d-flex.justify-content-center: a.text-decoration-none.btn.text-primary.bg-white.border.border-3.border-primary.rounded-pill.fw-600(\r\n :href=\"linkDescargaComplemento\"\r\n @click=\"gt('event', 'descargar', { event_category: 'complemento-estado-cuenta', event_label: 'home', value: 1 })\"\r\n target=\"_blank\"\r\n ) Estado de Cuenta\r\n i.fa-solid.fa-download.ms-2\r\n .col-md-12.mt-2.justify-content-center: p.text-center.text-white.fw-600 PAGUE ANTES DEL <br/> {{ fechaApagar }}\r\n .col-md-12.mt-1.justify-content-center: p.text-center.text-white.fw-bold.fs-1 {{ filtros.filtroDivisa(totalPagar) }}\r\n //- .col-md-12.d-flex.justify-content-center: button.btn.btn-primary.text-white.px-5.rounded-pill.fw-600 Pagar\r\n .col-md-12.mt-2.justify-content-center.text-center.text-white.fw-600(v-if=\"referencia != 'error' ? true : false\") REFERENCIA ÚNICA: <span class=\"fw-bold fs-5\">{{ referencia }}</span>\r\n hr.my-3.mx-1(style=\"color: #fff; height: 2px; max-width: calc(100% - 1rem)\")\r\n .col-md-12.mt-2.justify-content-center: .row\r\n .col-md-4.justify-content-center: router-link.text-decoration-none(:to=\"{ name: 'cliente-cliente-domiciliacion' }\")\r\n img(src=\"../assets/i_domiciliar.svg\" style=\"height: 30px\")\r\n button.text-white.btn.btn-link Domiciliación\r\n .col-md-4.justify-content-center: router-link.text-decoration-none(:to=\"{ name: 'cliente-cliente-facturacion' }\")\r\n img(src=\"../assets/i_facturacion.svg\" style=\"height: 30px\")\r\n button.text-white.btn.btn-link Facturación\r\n .col-md-4.justify-content-center\r\n img(src=\"../assets/i_aclaraciones.svg\" style=\"height: 30px\")\r\n button.text-white.btn.btn-link(@click.prevent=\"mostrarModalAclaraciones()\") Aclaraciones\r\n //- Modal de Aclaraciones\r\n .modal.fade(ref=\"aclaracionesModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-header\r\n h3#aclaracionesModalLabel.modal-title.m-2(style=\"color: #34189a; font-weight: bold\") Mis Aclaraciones\r\n button(\r\n @click.prevent=\"cerrarModalAclaraciones()\"\r\n style=\"float: right; width: 45px; height: 45px; margin: 20px 20px; background-color: transparent; border: none\"\r\n )\r\n i.fas.fa-times.fa-2x.text-primary \r\n .modal-body\r\n .row(v-if=\"mostrarOpcionAclaracion\")\r\n p.fw-bold(align=\"left\" style=\"margin: 0 30px\") Selecciona la opción deseada\r\n .row\r\n .col-md-12.mt-2(v-for=\"(aclaracion, i) in aclaraciones\" :key=\"i\")\r\n button#DP.fw-bold(\r\n @click.prevent=\"seleccionarAclaracion(aclaracion)\"\r\n style=\"width: 100%; background-color: #492fe5; color: white; border: none; text-align: left; padding: 7px 20px; border-radius: 7px\"\r\n :style=\"aclaracion.tipoAclaracionId == crearAclaracion.tipoAclaracionId ? 'background-color: #eb8113' : ''\"\r\n ) {{ aclaracion.nombre }}\r\n .row(v-if=\"mostrarDescripcion\")\r\n p.fw-bold(align=\"left\" style=\"margin: 20px 0 0 30px\") DescrÃbenos brevemente la situación\r\n div(style=\"width: 100%; margin: 10px 0 0 30px\"): textarea#mensaje(\r\n rows=\"3\"\r\n cols=\"50\"\r\n style=\"border-radius: 10px\"\r\n maxlength=\"250\"\r\n v-model=\"descripcion\"\r\n )\r\n div(style=\"width: 100%; margin-left: 30px\"): p#contador.text-left {{ descripcion.length }}/250\r\n .text-white(style=\"background-color: red; margin-left: 45px; width: 90%\" v-if=\"avisoDescripcion\") Agrega una descripción.\r\n .text-white(style=\"background-color: red; margin-left: 45px; width: 90%\" v-if=\"mensajeTamanioArchivo\") Tamaño de archivo NO Permitido.\r\n .text-white(style=\"background-color: red; margin-left: 45px; width: 90%\" v-if=\"mensajeTipoArchivo\") Tipo de archivo NO Permitido.\r\n div(style=\"margin: 10px 20px\")\r\n p.fw-bold(align=\"left\" style=\"margin: 0\") Adjunta documentos de evidencia\r\n p.fw-bold(align=\"left\" style=\"color: #c3c1c1; font-size: 14px\") Puedes adjuntar archivos JPG, PDF, PNG con un peso hasta de 10mb\r\n input#file.archivo(\r\n type=\"file\"\r\n multiple\r\n style=\"background-color: grey\"\r\n draggable=\"true\"\r\n accept=\".pdf,.png,.jpg\"\r\n hidden\r\n v-on:change=\"obtenerArchivo($event)\"\r\n )\r\n label(\r\n draggable=\"true\"\r\n for=\"file\"\r\n style=\"background-color: #e0e7ea; width: 60%; padding-top: 10px; border-radius: 10px; border: 2px solid #c2c8cb; margin-left: 150px\"\r\n )\r\n i.fas.fa-paperclip.text-primary\r\n p.fw-bold.text-muted Arrastra los archivos aquà o \r\n p(style=\"display: inline; text-decoration: underline; color: #eb8113\") Búscalos\r\n #nombres.row(v-for=\"(file, id) in files\" :key=\"id\" style=\"text-align: center; margin: 10px 0 0 0\")\r\n .col-md-2\r\n .col-md-2\r\n span\r\n a#eliminar(v-on:click=\"eliminarArchivo(id)\"): i.fas.fa-trash-alt\r\n .col-md-5\r\n a.nombre.fw-bold(:href=\"visualizarArchivo(file)\" target=\"_blank\" v-if=\"motsrarNombreArchivo == false ? true : false\") {{ file.name }}\r\n button.mt-2.text-white.fs-5.fw-bold.btn.btn-primary(@click=\"estado += 1\" @click.prevent=\"estadoBoton()\") Enviar\r\n .row(style=\"margin: 0 80px 0 80px\" v-if=\"mostrarFolio\")\r\n .row(style=\"margin-top: 80px; text-align: center\")\r\n p.fs-3.fw-bold Aclaraciones\r\n .row(style=\"text-align: center\")\r\n p.fw-bold Hemos recibido correctamente tu caso.\r\n .row(style=\"background-color: #492fe5; color: white; width: 400px; margin-left: 110px; border-radius: 8px\")\r\n p.fs-5(style=\"margin-top: 20px; text-align: center\") El folio de tu aclaración es:\r\n p.fw-bold.fs-3(style=\"text-align: center\") {{ folio.aclaracionId }}\r\n .row(style=\"margin: 40px 87px 0 87px; width: 450px\")\r\n p En breve uno de nuestros Asesores te contactará para darle seguimiento al caso.\r\n button.text-white.fs-5.fw-bold.btn.btn-primary(@click.prevent=\"cerrarModalAclaraciones()\") Cerrar\r\n .col-md-6.text-end \r\n img(src=\"../assets/img_main_pc.png\" style=\"width: calc(100% - 1rem)\")\r\n .col-md-12.mt-4: .d-flex.flex-row\r\n router-link.d-block.flex-fill.text-decoration-none.mx-2(:to=\"{ name: 'cliente-cliente-financiamiento' }\"): .card.h-100.justify-content-center.shadow(\r\n style=\"border-radius: 1rem\"\r\n ): .card-body.flex-grow-0\r\n .row.justify-content-md-center\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): img(src=\"../assets/Menu/icon_mifinanciamiento.svg\" style=\"height: 100px\")\r\n .col-md-12.mt-3\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-bold(style=\"color: #34189a\") MI FINANCIAMIENTO\r\n .col-md-12.mt-2\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-500.text-muted Información de tus contratos\r\n .col-md-12.mt-2\r\n .flex-fill.mx-2: .card.h-100.justify-content-center.shadow(style=\"border-radius: 1rem\"): .card-body.flex-grow-0\r\n .row.justify-content-md-center\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): .dropdown.d-inline-block\r\n a.btn.btn-outline-white.dropdown-toggle.bg-white.fw-bold.h6(\r\n data-bs-toggle=\"dropdown\"\r\n style=\"border-radius: 90px; color: #34189a; font-weight: 600\"\r\n )\r\n img(src=\"../assets/Menu/icon_seguros.svg\" style=\"height: 100px\")\r\n | <br>SEGUROS\r\n ul.dropdown-menu\r\n li: a.dropdown-item(v-for=\"(periodo, index) in seguros\" :key=\"index\" href=\"#\" @click.prevent=\"seleccionarSeguro(periodo.path)\") {{ periodo.Name }}\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-500.text-muted Tus coberturas y tu reporte de siniestro\r\n .col-md-12.mt-3 \r\n router-link.flex-fill.text-decoration-none.d-block.mx-2(v-if=\"$store.mostrarEscrituracion\" :to=\"{ name: 'cliente-cliente-aes' }\"): .card.h-100.justify-content-center.shadow(\r\n style=\"border-radius: 1rem\"\r\n ): .card-body.flex-grow-0\r\n .row.justify-content-md-center\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): img(src=\"../assets/Menu/icon_titulacion.svg\" style=\"height: 100px\")\r\n .col-md-12.mt-2\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-bold(style=\"color: #34189a\") TITULACIÓN\r\n .col-md-12.mt-2\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-500.text-muted La información de tu proceso de titulación.\r\n .col-md-12.mt-2\r\n router-link.flex-fill.text-decoration-none.d-block.mx-2(:to=\"{ name: 'cliente-cliente-perfil' }\"): .card.h-100.justify-content-center.shadow(\r\n style=\"border-radius: 1rem\"\r\n ): .card-body.flex-grow-0\r\n .row.justify-content-md-center\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): img(src=\"../assets/Menu/i_miperfil.svg\" style=\"height: 100px\")\r\n .col-md-12.mt-2\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-bold(style=\"color: #34189a\") MI PERFIL\r\n .col-md-12.mt-2\r\n .col-md-12.justify-content-center(style=\"text-align: center\"): p.h6.fw-500.text-muted La información de tu cuenta.\r\n .col-md-12.mt-2\r\n .flex-fill.mx-2\r\n router-link.d-block.text-decoration-none.mb-2(:to=\"{ name: 'cliente-cliente-adjudicaciones' }\"): .card.shadow(style=\"border-radius: 1rem\"): .card-body\r\n .d-flex.flex-row.align-items-center\r\n img.me-3(src=\"../assets/Menu/icon_adjudicaciones.svg\" style=\"height: 100px\")\r\n div\r\n p.h6.fw-bold(style=\"color: #34189a\") Adjudicaciones\r\n p.h6.fw-500.text-muted.text-nowrap Conoce la lista de clientes que han adjudicado.\r\n router-link.d-block.text-decoration-none.mt-2(:to=\"{ name: 'cliente-cliente-materiales-apoyo' }\"): .card.shadow(style=\"border-radius: 1rem\"): .card-body\r\n .d-flex.flex-row.align-items-center\r\n img.me-3(src=\"../assets/Menu/icon_materiales_apoyo.svg\" style=\"height: 100px\")\r\n div\r\n p.h6.fw-bold(style=\"color: #34189a\") MATERIAL DE APOYO\r\n p.h6.fw-500.text-muted.text-nowrap Inducción al Financiamiento \r\n span.text-primary HIR Casa\r\n .modal(ref=\"modalAceptarTCAP\")\r\n .modal-dialog\r\n .modal-content\r\n .modal-body\r\n h5 Acepto el <a href=\"https://hircasa.com.mx/aviso-privacidad/\" target=\"_blank\">Aviso de Privacidad</a> y <a href=\"https://hircasa.com.mx/terminos-y-condiciones/\" target=\"_blank\">Términos y Condiciones</a>\r\n .modal-footer\r\n button.btn.btn-primary(type=\"button\" @click=\"aceptarTCAP()\") Aceptar\r\n\r\n\r\n \r\n.modal(ref=\"bannerModalCampanias\")\r\n .modal-dialog\r\n .modal-content\r\n .modal-body\r\n img.me-3(src=\"../assets/PagosApp_PORTAL-CLIENTE.png\" style=\"width: 100%\")\r\n .modal-footer\r\n button.btn.btn-secondary.text-white(type=\"button\" @click=\"noMostrarModalBannerCampanias()\") No volver a mostrar\r\n \r\n\r\n\r\n\r\n</template>\r\n\r\n<style lang=\"sass\">\r\n.botones-secciones\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25)\r\n border-radius: 20px\r\na:hover img\r\n filter: opacity(0.5)\r\n.modal-overlay\r\n position: absolute\r\n top: 0\r\n left: 0\r\n bottom: 0\r\n right: 0\r\n z-index: 100\r\n height: 160%\r\n width: 100%\r\n background: rgba(0,0,0,0.4)\r\n#eliminar:hover\r\n cursor: pointer\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"../store\";\r\nimport Swal from \"sweetalert2\";\r\nimport { Cliente, Core } from \"@/servicios/api\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { ref, watch, onBeforeUnmount, onMounted, nextTick } from \"vue\";\r\nimport { onBeforeRouteUpdate, useRouter } from \"vue-router\";\r\n\r\ninterface MenuSeguros {\r\n path: string;\r\n Name: string;\r\n}\r\n\r\nconst $router = useRouter();\r\nconst $store = useStore();\r\nconst seguros = ref([] as MenuSeguros[]);\r\nconst estado = ref(0);\r\nconst enlaceHirContigo = ref(\"\")\r\nconst descripcion = ref(\"\");\r\nconst seleccionado = ref([] as any);\r\nconst aclaraciones = ref([] as any);\r\nconst tipoAclaracion = ref([] as any | undefined);\r\nconst mostrarModal = ref(false as boolean | undefined);\r\nconst mostrarDescripcion = ref(false as boolean | undefined);\r\nconst mostrarOpcionAclaracion = ref(true as boolean | undefined);\r\nconst mostrarFolio = ref(false as boolean | undefined);\r\nconst motsrarNombreArchivo = ref(true as boolean | undefined);\r\nconst folio = ref({} as any);\r\nconst crearAclaracion = ref({} as Core.Models.Aclaracion);\r\nconst aclaracionCliente = ref({} as Core.Models.AclaracionUsuario);\r\nconst avisoAclaracion = ref(false as boolean | undefined);\r\nconst avisoDescripcion = ref(false as boolean | undefined);\r\nconst mensajeTamanioArchivo = ref(false as boolean | undefined);\r\nconst mensajeTipoArchivo = ref(false as boolean | undefined);\r\nconst files = ref([] as File[]);\r\nconst fechaApagar = ref();\r\nconst totalPagar = ref(0 as number | undefined);\r\nconst tieneComplementoEstadoCuenta = ref(undefined as boolean | undefined);\r\nconst linkDescargaComplemento = ref(\"\" as string | undefined);\r\nconst referencia = ref(\"error\" as string | undefined);\r\nconst pagosVencidos = ref({} as any);\r\nconst componentId = ref(utilidades.generarId());\r\nconst Contratos = ref({} as any);\r\nconst banners = ref([] as Cliente.Models.BannerCampania[]);\r\nconst carouselBanners = ref(null as null | bootstrap.Carousel);\r\nconst listaContratos = ref([] as Cliente.Financiamiento.InformacionFinanciamientoContrato[]);\r\nconst contratoSeleccionado = ref({} as Cliente.Financiamiento.InformacionFinanciamientoContrato);\r\nconst modalAceptarTCAP = ref(null as HTMLDivElement | null);\r\nconst aclaracionesModal = ref(null as HTMLDivElement | null);\r\nconst bannerModalCampanias = ref(null as HTMLDivElement | null);\r\n\r\nwatch(contratoSeleccionado, val => {\r\n totalPagar.value = val.totalPagar!;\r\n linkDescargaComplemento.value = val.linkEstadoCuentaContrato.find(d => d != null);\r\n});\r\n\r\nfunction cerrarModal() {\r\n const miModal = document.getElementById(`modalLogin-${$store.modalLoginId}`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n modal?.hide();\r\n}\r\n\r\nasync function seleccionarSeguro(periodo: string) {\r\n await $router.push({ name: periodo });\r\n}\r\nfunction irProgramaRecicla() {\r\n $router.push({ name: \"cliente-cliente-programa-recicla\" });\r\n}\r\nfunction seleccionarAclaracion(index: any) {\r\n crearAclaracion.value.tipoAclaracionId = index.tipoAclaracionId;\r\n crearAclaracion.value.tipoAclaracion = index;\r\n}\r\nasync function estadoBoton() {\r\n if (estado.value == 1) {\r\n if (crearAclaracion.value.tipoAclaracionId == 0) {\r\n mostrarDescripcion.value = false;\r\n estado.value = 0;\r\n avisoAclaracion.value = true;\r\n } else {\r\n mostrarDescripcion.value = true;\r\n avisoAclaracion.value = false;\r\n }\r\n } else if (estado.value == 2) {\r\n if (descripcion.value.length > 0) {\r\n avisoDescripcion.value = false;\r\n mensajeTamanioArchivo.value = false;\r\n mostrarOpcionAclaracion.value = false;\r\n mostrarFolio.value = true;\r\n crearAclaracion.value.detalle = descripcion.value;\r\n var aclaracionGuardada = (await api.Cliente.Cliente.AclaracionApi.GuardarAclaracion(crearAclaracion.value)).data;\r\n folio.value = aclaracionGuardada.data;\r\n aclaracionCliente.value.aclaracionId = folio.value.aclaracionId;\r\n aclaracionCliente.value.aclaracion = folio.value.aclaracion;\r\n var archivos = [] as string[];\r\n for (let f of files.value) {\r\n var archivoGuardado = await api.Cliente.Cliente.AclaracionApi.GuardarArchivo(f, folio.value.ruta!);\r\n archivos.push(archivoGuardado.data);\r\n }\r\n await api.Cliente.Cliente.AclaracionApi.CrearZip(archivos.toString());\r\n await api.Cliente.Cliente.AclaracionApi.GuardarUsuarioAclaracion(aclaracionCliente.value);\r\n } else {\r\n if (descripcion.value.length <= 0) avisoDescripcion.value = true;\r\n estado.value = 1;\r\n }\r\n }\r\n}\r\nfunction obtenerArchivo(event: any) {\r\n // Utilizamos jQuery para actualizar los nombres de los archivos\r\n // Obtenemos el arreglo de archivos que haya adjuntado el cliente\r\n let file = event.target.files;\r\n let info;\r\n let obtenerExtension;\r\n // Validamos si existen archivos asjuntos para mostrar su nombre\r\n if (file.length <= 0) motsrarNombreArchivo.value = true;\r\n else motsrarNombreArchivo.value = false;\r\n // Realizamos validaciones a los archivos adjuntos\r\n for (let f of file) {\r\n info = f.type;\r\n if (f.size > 10 * 1024 * 1024) mensajeTamanioArchivo.value = true;\r\n obtenerExtension = info.split(\"/\");\r\n if (obtenerExtension[1] == \"pdf\" || obtenerExtension[1] == \"png\" || obtenerExtension[1] == \"jpg\")\r\n mensajeTipoArchivo.value = false;\r\n else mensajeTipoArchivo.value = true;\r\n files.value.push(f);\r\n }\r\n crearAclaracion.value.archivo = true;\r\n}\r\nfunction visualizarArchivo(archivo: Blob) {\r\n return URL.createObjectURL(archivo);\r\n}\r\nfunction eliminarArchivo(indice: number) {\r\n files.value.splice(indice, 1);\r\n}\r\nasync function aceptarTCAP() {\r\n await api.Cliente.Cliente.HomeApi.AceptarTerminosCondicionesAvisoPrivacidad();\r\n bootstrap.Modal.getOrCreateInstance(modalAceptarTCAP.value!).hide();\r\n}\r\nfunction mostrarModalAclaraciones() {\r\n api.Cliente.Cliente.HomeApi.ObtenerAdeudoVencidos().then(() => {\r\n let mostrarPopup = false;\r\n let mensaje = \"\";\r\n if (\r\n (pagosVencidos.value.esIntegrante || pagosVencidos.value.esAdjudicatario) &&\r\n pagosVencidos.value.cuotasVencidas > 0 &&\r\n pagosVencidos.value.cuotasVencidas <= 3.5\r\n ) {\r\n mostrarPopup = true;\r\n mensaje = \"Da clic en opción 1 seguido de la opción A.\";\r\n } else if (\r\n (pagosVencidos.value.esAdjudicatario && pagosVencidos.value.cuotasVencidas >= 3.51) ||\r\n (pagosVencidos.value.esAdjudicado && pagosVencidos.value.cuotasVencidas >= 0.01)\r\n ) {\r\n mostrarPopup = true;\r\n mensaje = \"Da clic en opción 3.\";\r\n }\r\n\r\n if (mostrarPopup) {\r\n Swal.fire({\r\n html:\r\n `<p class=\"fs-2 fw-bold\">Estimado cliente:</p></br>\r\n <p class=\"h6\">Por el momento tu(s) cobertura(s) en Seguro de Vida y Daños no se encuentran vigentes.</p></br>\r\n <p class=\"h6 fw-bold\">Te sugerimos verificarlo.</p></br>\r\n <div class=\"card\">\r\n <div class=\"card-body\" style=\"background-color: #eceff2\">\r\n <a href=\"` +\r\n pagosVencidos.value.contactoWhatsApp +\r\n `\" target=\"_blank\" class=\"btn btn-primary text-white\">Contáctanos vÃa WhatsApp</a></br>\r\n <div style=\"border-right: solid; width: 50%; height:20px\"></div>\r\n <p class=\"h6\">` +\r\n mensaje +\r\n `</p></br>\r\n </div>\r\n </div>`,\r\n showCloseButton: true,\r\n showConfirmButton: false\r\n });\r\n } else {\r\n mostrarModal.value = true;\r\n bootstrap.Modal.getOrCreateInstance(aclaracionesModal.value!).show();\r\n }\r\n });\r\n}\r\nfunction cerrarModalAclaraciones() {\r\n bootstrap.Modal.getOrCreateInstance(aclaracionesModal.value!).hide();\r\n mostrarModal.value = false;\r\n mostrarDescripcion.value = false;\r\n for (let index = 0; index < seleccionado.value.length; index++) {\r\n seleccionado.value[index] = false;\r\n }\r\n for (let index = 0; index < tipoAclaracion.value.length; index++) {\r\n tipoAclaracion.value[index] = undefined;\r\n }\r\n crearAclaracion.value.tipoAclaracionId = 0;\r\n estado.value = 0;\r\n mostrarOpcionAclaracion.value = true;\r\n mostrarFolio.value = false;\r\n descripcion.value = \"\";\r\n avisoAclaracion.value = false;\r\n avisoDescripcion.value = false;\r\n crearAclaracion.value.archivo = false;\r\n mensajeTipoArchivo.value = false;\r\n mensajeTamanioArchivo.value = false;\r\n motsrarNombreArchivo.value = true;\r\n files.value = [];\r\n}\r\n\r\n\r\nconst showBannerCompanias = () => {\r\n const seguirMostrandoBannerCampania = sessionStorage.getItem(\"seguirMostrandoBannerCampania\");\r\n if (seguirMostrandoBannerCampania == \"true\") {\r\n bootstrap.Modal.getOrCreateInstance(bannerModalCampanias.value!, {\r\n backdrop: \"static\"\r\n }).show();\r\n }\r\n}\r\nconst noMostrarModalBannerCampanias = () => {\r\n sessionStorage.setItem(\"seguirMostrandoBannerCampania\", \"false\");\r\n bootstrap.Modal.getOrCreateInstance(bannerModalCampanias.value!).hide();\r\n}\r\n\r\n\r\nconst gt = gtag;\r\n\r\nonMounted(async () => {\r\n //** Camapaña para mostrar banner de descarga de app nueva */\r\n showBannerCompanias();\r\n //** Comentar o eliminar para quitar modal banner */\r\n \r\n seguros.value = [];\r\n seguros.value.push({ path: \"cliente-cliente-seguro-vida\", Name: \"Vida\" });\r\n seguros.value.push({ path: \"cliente-cliente-seguro-danios\", Name: \"Daños\" });\r\n seguros.value.push({ path: \"cliente-cliente-siniestro-generales\", Name: \"Siniestros\" });\r\n //obtenemos los contratos activos\r\n let respContratos = await api.Cliente.Cliente.FinanciamientoApi.ObtenerContratos(1);\r\n listaContratos.value = respContratos.data;\r\n let resp = await api.Cliente.Cliente.ProgramaReclicaApi.ObtenerClienteProgramaRecicla();\r\n let _cliente = resp.data.data;\r\n let invitacionProgramaReciclaMostrado = Boolean(window.sessionStorage.getItem(\"invitacionProgramaReciclaMostrado\"));\r\n if (!_cliente.programaRecicla && !invitacionProgramaReciclaMostrado) {\r\n window.sessionStorage.setItem(\"invitacionProgramaReciclaMostrado\", \"true\");\r\n Swal.fire({\r\n position: \"top-end\",\r\n backdrop: \"rgba(0,0,0,0)\",\r\n background: \"#8CC63E\",\r\n html: `<div class='text-white ff-poppins'>\r\n En <b style='color: #2F2D74'>HIR CASA</b> estamos <b>comprometidos con nuestro medio ambiente</b>, por lo que te invitamos a ser parte de este compromiso:\r\n apóyanos <b>activando el envÃo de tu estado de cuenta digital</b>.</div>`,\r\n showCloseButton: true,\r\n closeButtonHtml: \"<i class='fas fa-times' style='color: #fff; font-size: 20px'></i>\",\r\n showCancelButton: false,\r\n focusConfirm: true,\r\n confirmButtonText: \"SÃ, deseo unirme a la campaña\",\r\n confirmButtonColor: \"#FFA000\",\r\n timer: 15000,\r\n toast: true,\r\n width: \"35%\"\r\n }).then(resp2 => {\r\n if (resp2.isConfirmed) {\r\n irProgramaRecicla();\r\n }\r\n });\r\n }\r\n /*\r\n Seguros S5Q4 HU-7244-PAGOSVENCIDOS\r\n */\r\n pagosVencidos.value = await (await api.Cliente.Cliente.HomeApi.ObtenerAdeudoVencidos()).data.data;\r\n if (pagosVencidos.value.tienePagosVencidos.length > 0) {\r\n Swal.fire({\r\n html: `<p class=\"fs-2 fw-bold\">Estimado cliente:</p></br>\r\n <p class=\"h6 fw-bold\">Presentas mensualidades atrasadas de tu financiamiento realiza tu pago y ponte al corriente.</p></br>\r\n <p class=\"h6\">Recuerda que por el momento no tienes la cobertura de tu seguro de vida o daños.</p></br>\r\n <a class=\"btn btn-primary text-white\" href=\"#\" target=\"_blank\"> Pagar`,\r\n showCloseButton: true,\r\n showConfirmButton: false\r\n });\r\n }\r\n let res = await api.Cliente.Cliente.HomeApi.ObtenerInformacionHome(); \r\n const data = `${_cliente.clienteId}&organizacion=True`; \r\n Contratos.value = res.data.contrato;\r\n banners.value = res.data.banners ?? [];\r\n $store.mostrarEscrituracion = res.data.mostrarEscrituracion;\r\n $store.porLiquidar = res.data.porLiquidar;\r\n await nextTick();\r\n if (banners.value.length)\r\n carouselBanners.value = new bootstrap.Carousel(document.querySelector(\"#\" + componentId.value + \"banners\")!);\r\n\r\n api.Cliente.Cliente.FinanciamientoApi.ObtenerInformacion().then(a => {\r\n let informacionFinanciamiento = a.data;\r\n if (informacionFinanciamiento.linkDescargaComplemento) {\r\n totalPagar.value = informacionFinanciamiento.totalPagar;\r\n fechaApagar.value = new Intl.DateTimeFormat(\"es-MX\", {\r\n day: \"2-digit\",\r\n month: \"2-digit\",\r\n year: \"numeric\"\r\n }).format(new Date(informacionFinanciamiento.fechaVigencia));\r\n tieneComplementoEstadoCuenta.value = informacionFinanciamiento.tieneComplementoEstadoCuenta;\r\n linkDescargaComplemento.value = informacionFinanciamiento.linkDescargaComplemento;\r\n referencia.value = informacionFinanciamiento.referenciaUnica;\r\n }\r\n });\r\n seleccionado.value.length = 5;\r\n for (let index = 0; index < seleccionado.value.length; index++) {\r\n seleccionado.value[index] = false;\r\n }\r\n let respA = await api.Cliente.Cliente.AclaracionApi.ListarAclaraciones();\r\n aclaraciones.value = respA.data;\r\n\r\n if (!$store.clienteAceptaTerminosCondicionesAvisoPrivacidad) {\r\n bootstrap.Modal.getOrCreateInstance(modalAceptarTCAP.value!, {\r\n backdrop: \"static\"\r\n }).show();\r\n }\r\n cerrarModal();\r\n\r\n});\r\n\r\nonBeforeUnmount(() => {\r\n carouselBanners.value?.dispose();\r\n});\r\n</script>\r\n\r\n","<template lang=\"pug\">\r\ndiv\r\n .container\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-12\r\n .d-inline-block(\r\n style=\"background: #374066; color: #ffffff; padding: 15px 26px; border-top-left-radius: 11px; border-top-right-radius: 11px; margin-left: 26px\"\r\n ): b.text.secondary Financiamiento\r\n .col-md-12(v-if=\"tieneComplementoEstadoCuenta != undefined && tieneComplementoEstadoCuenta\"): .card: .card-body\r\n .row: .col: p.fw-bold.text-center\r\n span.text-muted PAGUE TODOS SUS CONTRATOS EN \r\n | UNA SOLA REFERENCIA\r\n .row\r\n .col-2\r\n .col-4.text-center\r\n p.text-muted TOTAL A PAGAR\r\n p.text-primary {{ filtros.filtroDivisa(totalPagar) }}\r\n .col-4.text-center\r\n p.text-muted DESCARGA TU COMPLEMENTO\r\n p.text-center: a.text-primary(\r\n style=\"font-size: 30px\"\r\n @click=\"gt('event', 'descargar', { event_category: 'complemento-estado-cuenta', event_label: 'financiamiento', value: 1 })\"\r\n :href=\"linkDescargaComplemento\"\r\n target=\"_blank\"\r\n ): i.fas.fa-download\r\n //- .col-3\r\n button.btn.btn-primary.text-white Solicita tu Domiciliación\r\n .col-md-12(v-if=\"tieneComplementoEstadoCuenta != undefined && !tieneComplementoEstadoCuenta\"): .card: .card-body\r\n .row: .col: p.fw-bold.text-center\r\n span.text-muted DESCARGUE TODOS LOS ESTADOS DE CUENTA DE SUS CONTRATOS EN \r\n | UN SOLO ARCHIVO\r\n .row\r\n .col-2\r\n .col-4.text-center\r\n p.text-muted TOTAL A PAGAR\r\n p.text-primary {{ filtros.filtroDivisa(totalPagar) }}\r\n .col-4.text-center\r\n p.text-muted DESCARGA TUS ESTADOS DE CUENTA\r\n p.text-center: a.text-primary(\r\n style=\"font-size: 30px\"\r\n @click=\"gt('event', 'descargar', { event_category: 'complemento-estado-cuenta', event_label: 'financiamiento', value: 1 })\"\r\n :href=\"linkDescargaComplemento\"\r\n target=\"_blank\"\r\n ): i.fas.fa-download\r\n //- .col-3\r\n button.btn.btn-primary.text-white Solicita tu Domiciliación\r\n .row.mt-3\r\n .col-md-12: .card: .card-body.card-top(style=\"background: #5935df\")\r\n .row\r\n .col-4\r\n .input-group\r\n label.input-group-text.bg-white(\r\n style=\"border-top-left-radius: 90px; border-bottom-left-radius: 90px; border-right: none\"\r\n :for=\"componentId + 'BusquedaContrato'\"\r\n ): em.fas.fa-search\r\n input.form-control(\r\n type=\"search\"\r\n placeholder=\"Búsqueda por Contrato\"\r\n v-model=\"filtroContrato\"\r\n style=\"border-top-right-radius: 90px; border-bottom-right-radius: 90px; border-left: none\"\r\n :id=\"componentId + 'BusquedaContrato'\"\r\n )\r\n .col-8.text-end.text-white\r\n span.fw-bold.me-3 Agrupar por:\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoAgrupacion'\"\r\n :id=\"componentId + 'TipoAgrupacion0'\"\r\n value=\"grupo\"\r\n v-model=\"tipoAgrupacion\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoAgrupacion0'\") Grupo\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoAgrupacion'\"\r\n :id=\"componentId + 'TipoAgrupacion1'\"\r\n value=\"etapa\"\r\n v-model=\"tipoAgrupacion\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoAgrupacion1'\") Etapa de Contrato\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"radio\"\r\n :name=\"componentId + 'TipoAgrupacion'\"\r\n :id=\"componentId + 'TipoAgrupacion2'\"\r\n value=\"garantia\"\r\n v-model=\"tipoAgrupacion\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'TipoAgrupacion2'\") Inmueble\r\n .dropdown.d-inline-block\r\n button.btn.btn-outline-white.dropdown-toggle.bg-white(data-bs-toggle=\"dropdown\" style=\"border-radius: 90px\") {{ (periodoSeleccionado || {}).texto }}\r\n ul.dropdown-menu\r\n li: a.dropdown-item(v-for=\"periodo in catalogos.meses.value\" :key=\"periodo.texto\" href=\"#\" @click.prevent=\"seleccionarPeriodo(periodo)\") {{ periodo.texto }}\r\n .col-md-12: .card: .card-body\r\n .row\r\n .col-6\r\n p.m-2.font-weight-bold Da click en el contrato para descargar tu Estado de Cuenta\r\n .col-3\r\n button.btn.btn-primary.text-white.fw-bold(href=\"#\" style=\"border-radius: 16px; font-size: 14px\" @click.prevent=\"abrirModalDescuento()\") Mis Descuentos del Mes\r\n .col-3\r\n button.btn.btn-primary.text-white.fw-bold(href=\"#\" style=\"border-radius: 16px; font-size: 14px\" @click=\"mostrarTablaAclaraciones()\") Seguimiento de Aclaraciones\r\n //- Modal Descuentos\r\n #descuentosModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-header\r\n h3#descuentosModalLabel.modal-title.m-2(style=\"color: #34189a; font-weight: bold\") Mis descuentos\r\n .modal-body\r\n .row.text-center\r\n .col-md-12: h4.m-2.font-weight-bold(style=\"color: #34189a; font-weight: bold\") Total de descuentos\r\n .row.mb-3.mt-3\r\n .col-md-12.text-center\r\n .card.mb-2(style=\"border-radius: 8px; border: none\"): .card-body(style=\"background: #2C2666; padding: 16px 26px; color: white; border-radius: 12px\")\r\n .row\r\n .col-md-12\r\n p.text-white En este mes el ahorro acumulado de tus \r\n span.fw-bold(style=\"color: #ffa000\") {{ numContratos }} Contratos \r\n | ha sido:\r\n .col-md-12\r\n p.h4.text-center.text-white(style=\"font-weight: bold\") {{ filtros.filtroDivisa(utilidades.ifNaN(descuentosPago)) }}\r\n \r\n .row: .col-md-12.acordion-discount\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionDetalle'\")\r\n .accordion-item\r\n h2.accordion-header.text-center: span.accordion-button.collapsed.fw-bold(\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#' + componentId + 'detalledescuentoscontrato'\"\r\n ): div(\r\n style=\"margin-left: 34%\"\r\n ) Conoce a detalle tus descuentos aquÃ\r\n .accordion-collapse.collapse(:id=\"componentId + 'detalledescuentoscontrato'\" :data-bs-parent=\"'#' + componentId + 'acordionDetalle'\"): .accordion-body\r\n .row\r\n .col-md-4.mb-3(v-for=\"descuento in descuentos\" :key=\"descuento.NumeroContrato\")\r\n .card(style=\"border: none; box-shadow: 0px 0px 4px 4px #0000000D;\")\r\n .row.m-0(style=\"background: #2C2666; border-radius: 8px 8px 0 0; border: none; color: white\")\r\n .col-12\r\n p.text-center.m-0.mt-3.mb-2(style=\"font-weight: 600\") Contrato: {{ descuento.NumeroContrato }} \r\n .row.m-3.align-items-center(style=\"color: #2C2666\")(v-for=\"(d, index) in descuento.Descuentos\" :key=\"index\")\r\n .col-12\r\n .row(style=\"font-size: 11px;\")\r\n .col-6.p-0\r\n p.m-0 Vencimiento: {{ filtros.formatoFecha(d.FechaVencimiento) }}\r\n .col-6.text-end.p-0\r\n p.m-0 No. Recibo {{ d.NumeroRecibo }}\r\n .col-6.p-0(style=\"font-weight: 600\")\r\n p.m-0 {{ d.NombreMotivo }}\r\n .col-6.p-0.text-end(style=\"font-weight: 600\")\r\n p.m-0 {{ filtros.filtroDivisa(d.Monto) }} \r\n .row: .col-md-12.acordion-discount\r\n .accordion.shadow.mb-4(:id=\"componentId + 'acordionVendedor'\")\r\n .accordion-item\r\n h2.accordion-header.text-center: span.accordion-button.collapsed.fw-bold(\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#' + componentId + 'detalledescuentos'\"\r\n ): div(\r\n style=\"margin-left: 35%\"\r\n ) ¿Cómo obtengo los descuentos?\r\n .accordion-collapse.collapse(:id=\"componentId + 'detalledescuentos'\" :data-bs-parent=\"'#' + componentId + 'acordionVendedor'\"): .accordion-body\r\n .row.justify-content-md-center.d-flex\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Domiciliación Inicial 5%\r\n .col-md-12: p.mt-4\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo obtienes al domiciliar el dÃa que contrataste.\r\n .col-md-12: p.mt-4\r\n .col-md-12: br\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Domiciliación Posterior 2.5%\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo puedes obtener al domiciliar después de haber contratado.\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Score de Buro de Credito 5%\r\n .col-md-12: p.mt-4\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo obtienes al contratar o al escriturar.\r\n .col-md-12: p.mt-4\r\n .col-md-12: br\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Pago Puntual Inicial 5%\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo obtienes al realizar tus pagos puntualmente de forma continua (al 6º mes).\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Pago Puntual Sostenido 5%\r\n .col-md-12: p.mt-4\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo obtienes al mantener tus pagos puntuales (al 13º mes).\r\n .col-md-12: p.mt-4\r\n .col-md-2: .card.mb-2(style=\"border-radius: 12px; border: 1px solid #94a3b0\"): .card-body(\r\n style=\"background-color: white; border-radius: 12px\"\r\n )\r\n .row.justify-content-md-center\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #302d74\") Referidos 5%\r\n .col-md-12: p.text-center(style=\"color: #444444\") Lo obtienes en todos tus contratos cuando tu referido firma con nosotros (por 12º mes).\r\n .col-md-12: p.text-primary.fw-bold * Aplica Restricciones.\r\n .modal-footer\r\n button.btn.text-white.fw-bold(data-dismiss=\"modal\" @click=\"ocultarPopUp()\")(style=\"background-color: #2C2666\") Cerrar\r\n #tablaAclaraciones.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-header\r\n h3#tablaAclaracionesLabel.modal-title.m-2(style=\"color: #34189a; font-weight: bold\") Seguimiento de Aclaraciones\r\n .modal-body\r\n .row(style=\"text-align: center\")\r\n table.table.table-striped(style=\"padding: 4px\")\r\n thead\r\n tr \r\n th Folio\r\n th Contratos Involucrados\r\n th Tipo de Aclaración\r\n th Estatus\r\n tbody\r\n tr(v-for=\"(item, i) in listaAclaraciones\" :key=\"i\")\r\n td.fw-bold {{ item.aclaracionId }}\r\n td {{ item.numeroContrato }}\r\n td {{ obtenertipoAclaracion(item.tipoAclaracionId) }}\r\n td.fw-bold(\r\n v-if=\"item.fechaTerminacion?.slice(0, 10) == '2000-01-01' ? (estatus = 'En proceso') : (estatus = 'Finalizado')\"\r\n :style=\"item.fechaTerminacion?.slice(0, 10) == '2000-01-01' ? 'color: green' : 'color: red'\"\r\n ) {{ estatus }}\r\n .modal-footer\r\n button.btn.btn-primary.text-white.fw-bold(data-dismiss=\"modal\" @click=\"ocultarTabla()\") Cerrar\r\n template(v-for=\"(grupo, i) in catalogosContratosGrupos\")\r\n .row: .col.text-end\r\n span(v-if=\"tipoAgrupacion == 'grupo'\") GRUPO {{ grupo }}\r\n span(v-if=\"tipoAgrupacion == 'etapa'\") ETAPA DE CONTRATO {{ grupo }}\r\n template(v-if=\"tipoAgrupacion == 'garantia'\")\r\n .input-group.me-2.d-inline-flex.w-auto(style=\"border-radius: 90px; background-color: #94a3b0; min-width: 200px\" v-if=\"grupo != '-1'\")\r\n label.input-group-text.border-none.bg-transparent.text-white(:for=\"componentId + 'inputAliasGarantia' + i\"): i.fas.fa-pen\r\n input.form-control.text-white.ph-text-white.bg-transparent.border-none(\r\n :id=\"componentId + 'inputAliasGarantia' + i\"\r\n :ref=\"el => inputGarantiaAliasRef(el, i)\"\r\n type=\"text\"\r\n :value=\"obtenerAliasGarantia(grupo)\"\r\n placeholder=\"Agregar Alias\"\r\n style=\"font-weight: 600\"\r\n maxlength=\"150\"\r\n :pattern=\"utilidades.patronAlfaNumEspacio\"\r\n @change.prevent=\"actualizarAliasGarantia(grupo, i)\"\r\n )\r\n span(style=\"color: #94a3b0; font-weight: 600\") {{ obtenerProductoContratado(grupo) }}\r\n a.d-inline-block.text-center.text-decoration-none.ms-2(href=\"#\" @click.prevent=\"obtenerManualConsumidor(grupo)\" v-if=\"tipoAgrupacion == 'grupo'\") Manual<br><em class=\"fas fa-file-pdf text-primary\"></em>\r\n //- a.d-inline-block.text-center.text-decoration-none.ms-2(href=\"#\") Contrato<br><em class=\"fas fa-file-pdf text-primary\"></em>\r\n hr\r\n .row(style=\"margin-bottom: 5rem\")\r\n .col-md-2(v-for=\"contrato in obtenerContratosGrupo(grupo)\")\r\n .card: a.card-body.d-block.text-decoration-none.btn.btn-outline-primary(\r\n :href=\"contrato.linkEstadoCuentaContrato[(periodoSeleccionado || {}).i || 0]\"\r\n :title=\"'Descargar estado de cuenta - ' + (periodoSeleccionado || {}).texto\"\r\n target=\"_blank\"\r\n )\r\n p.text-center {{ contrato.numeroContrato }}\r\n p \r\n | {{ filtros.filtroDivisa(contrato.totalPagar) }}\r\n em.fas.fa-circle.ms-2(\r\n :class=\"{ 'text-success': contrato.totalPagar == 0, 'text-danger': contrato.vencido, 'text-warning': !contrato.vencido && contrato.totalPagar != 0 }\"\r\n )\r\n .row(v-if=\"mostrarTabla\" style=\"text-align: center\")\r\n .col(style=\"text-align: center; margin-bottom: 30px\")\r\n h2 Seguimiento de Aclaraciones\r\n .row\r\n table.table.table-striped(style=\"padding: 4px\")\r\n thead\r\n tr \r\n th Folio\r\n th Contratos Involucrados\r\n th Tipo de Aclaración\r\n th Estatus\r\n tbody\r\n tr(v-for=\"(item, i) in listaAclaraciones\" :key=\"i\")\r\n td.fw-bold {{ item.aclaracionId }}\r\n td {{ item.numeroContrato }}\r\n td {{ obtenertipoAclaracion(item.tipoAclaracionId) }}\r\n td.fw-bold(\r\n v-if=\"item.fechaTerminacion?.slice(0, 10) == '2000-01-01' ? (estatus = 'En proceso') : (estatus = 'Finalizado')\"\r\n :style=\"item.fechaTerminacion?.slice(0, 10) == '2000-01-01' ? 'color: green' : 'color: red'\"\r\n ) {{ estatus }}\r\n</template>\r\n\r\n<style lang=\"sass\" scoped>\r\n.card-top\r\n border-top-left-radius: 8px\r\n border-top-right-radius: 8px\r\n\r\n.acordion-discount .accordion-button:not(.collapsed) \r\n color: white\r\n background-color: #2C2666\r\n\r\n.acordion-discount .accordion-button:not(.collapsed)::after \r\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIGNsYXNzPSJiaSBiLWNoZXZyb24tZG93biIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHoiLz4KPC9zdmc+')\r\n background-size: 1.3em\r\n background-repeat: no-repeat\r\n background-position: center\r\n content: \"\"\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { toRefs, reactive, computed, ref, watch, onMounted, nextTick } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { DateTime } from \"luxon\";\r\nimport { Cliente } from \"@/servicios/api\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport type * as RuntimeCore from \"@vue/runtime-core\";\r\n\r\ninterface Periodo {\r\n i: number;\r\n texto: string;\r\n}\r\n\r\n//#region Data\r\nconst $store = useStore();\r\nconst componentId = utilidades.generarId();\r\nconst tieneComplementoEstadoCuenta = ref(undefined as boolean | undefined);\r\nconst totalPagar = ref(0 as number | undefined);\r\nconst linkDescargaComplemento = ref(\"\" as string | undefined);\r\nconst nombreCliente = \"\";\r\nconst catalogos = toRefs(\r\n reactive({\r\n meses: [] as Periodo[],\r\n contratos: [] as Cliente.Financiamiento.InformacionFinanciamientoContrato[]\r\n })\r\n);\r\nconst periodoSeleccionado = ref(null as Periodo | null);\r\nconst filtroContrato = ref(\"\");\r\nconst tipoAgrupacion = ref(\"grupo\");\r\nconst tabla = null as any;\r\nconst descuentos = ref();\r\nconst pagoMes = ref(0);\r\nconst descuentosPago = ref(0);\r\nconst numContratos = ref(0);\r\nconst descuentoDomInicial = ref(0);\r\nconst descuentoPostDomi = ref(0);\r\nconst descuentoScore = ref(0);\r\nconst descuentoPPI = ref(0);\r\nconst descuentoPPS = ref(0);\r\nconst descuentoRef = ref(0);\r\nconst totalContratos = ref(0);\r\nlet modalDescuentos = null as null | bootstrap.Modal;\r\nconst inputGarantiaAlias = ref([] as (Element | HTMLInputElement)[]);\r\nconst inputGarantiaAliasRef = (el: Element | RuntimeCore.ComponentPublicInstance | null, i: number) => {\r\n if (el) inputGarantiaAlias.value[i] = el as Element;\r\n};\r\nconst listaAclaraciones = ref([] as Cliente.Cliente.TablaAclaracion[] | undefined);\r\nconst estatus = ref(\"\");\r\nconst tipoAclaracionFor = ref(\"\");\r\nconst contrato = ref(\"\");\r\nconst mostrarTabla = ref(false);\r\nlet modalAclaraciones = null as null | bootstrap.Modal;\r\n//#endregion\r\n\r\n//#region Computed\r\nconst catalogosContratosGrupos = computed((): string[] => {\r\n if (!catalogos.contratos.value.length) return [] as string[];\r\n return utilidades\r\n .arrayDistinct(catalogos.contratos.value, (a: any, b: any) => a[tipoAgrupacion.value] == b[tipoAgrupacion.value])\r\n .map((a: any) => a[tipoAgrupacion.value] || \"\");\r\n});\r\n//#endregion\r\n\r\n//#region Watch\r\nwatch(periodoSeleccionado, async (val: Periodo | null) => {\r\n if (val) {\r\n let contratos = (await api.Cliente.Cliente.FinanciamientoApi.ObtenerContratos(1)).data;\r\n if (contratos.length) catalogos.contratos.value = contratos;\r\n }\r\n});\r\n//#endregion\r\n\r\n//#region Methods\r\nfunction ocultarPopUp() {\r\n modalDescuentos?.hide();\r\n}\r\nfunction ocultarTabla() {\r\n modalAclaraciones?.hide();\r\n}\r\nfunction abrirModalDescuento() {\r\n modalDescuentos?.show();\r\n}\r\nfunction mostrarTablaAclaraciones() {\r\n modalAclaraciones?.show();\r\n}\r\nfunction seleccionarPeriodo(periodo: Periodo) {\r\n periodoSeleccionado.value = periodo;\r\n}\r\nfunction obtenerContratosGrupo(grupo: string) {\r\n if (grupo.length == 3) grupo = \"0\" + grupo;\r\n return catalogos.contratos.value.filter(\r\n a =>\r\n ((tipoAgrupacion.value == \"grupo\" && a.numeroContrato?.startsWith(grupo)) ||\r\n (tipoAgrupacion.value == \"etapa\" && a.etapa == grupo) ||\r\n (tipoAgrupacion.value == \"garantia\" && a.garantia.toString() == grupo)) &&\r\n (filtroContrato.value == \"\" ||\r\n (tipoAgrupacion.value == \"grupo\" && a.numeroContrato?.includes(filtroContrato.value)) ||\r\n (tipoAgrupacion.value == \"etapa\" && a.etapa?.includes(filtroContrato.value)) ||\r\n (tipoAgrupacion.value == \"garantia\" && a.garantia.toString()?.includes(filtroContrato.value)))\r\n );\r\n}\r\nasync function obtenerManualConsumidor(grupo: string) {\r\n let res = await api.Cliente.Cliente.FinanciamientoApi.ObtenerPdfManualConsumidor(\r\n catalogos.contratos.value.find(a => a.grupo == grupo)?.contratoId ?? 0\r\n );\r\n utilidades.descargarBlob(res.data, \"Manual del consumidor.pdf\");\r\n}\r\nfunction obtenerProductoContratado(grupo: string) {\r\n if (tipoAgrupacion.value != \"garantia\") return \"\";\r\n return catalogos.contratos.value.find(a => a.garantia.toString() == grupo)?.productoContratado?.replace(/_/g, \" \");\r\n}\r\nfunction obtenerAliasGarantia(grupo: string) {\r\n if (tipoAgrupacion.value != \"garantia\") return \"\";\r\n return catalogos.contratos.value.find(a => a.garantia.toString() == grupo)?.aliasGarantia;\r\n}\r\nasync function actualizarAliasGarantia(grupo: string, i: number) {\r\n let contratoLocal = catalogos.contratos.value.find(a => a.garantia.toString() == grupo);\r\n if (contratoLocal) {\r\n if (!inputGarantiaAlias.value[i].validity.valid) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.WARNING,\r\n body: \"Carácteres inválidos\"\r\n });\r\n contratoLocal.aliasGarantia = \"\";\r\n } else {\r\n contratoLocal.aliasGarantia = inputGarantiaAlias.value[i].value.trim();\r\n }\r\n if (contratoLocal.aliasGarantia) {\r\n let res = (\r\n await api.Cliente.Cliente.FinanciamientoApi.ActualizarAliasGarantia(Number(grupo), contratoLocal.aliasGarantia)\r\n ).data;\r\n $store.agregarToast(res);\r\n contratoLocal.aliasGarantia = res.data;\r\n }\r\n }\r\n}\r\n\r\nasync function obtenerAclaracion() {\r\n let aclaracion = (await api.Cliente.Cliente.AclaracionApi.ObtenerAclaraciones()).data;\r\n listaAclaraciones.value = aclaracion;\r\n}\r\n\r\nfunction obtenertipoAclaracion(id: number) {\r\n if (id == 1) return \"Dupliqué mi pago\";\r\n else if (id == 2) return \"No aparece mi pago\";\r\n else if (id == 3) return \"No reconozco un pago\";\r\n else if (id == 4) return \"Excedà mi pago\";\r\n else return \"Tengo dudas de mi pago\";\r\n}\r\n\r\nconst gt = gtag;\r\n//#endregion\r\n\r\nonMounted(async () => {\r\n let fecha = DateTime.now().setLocale(\"es-MX\");\r\n let formato: Intl.DateTimeFormatOptions = {\r\n month: \"long\",\r\n year: \"numeric\"\r\n };\r\n for (let i = 0; i < 13; i++) {\r\n catalogos.meses.value.push({ i, texto: fecha.toLocaleString(formato) });\r\n fecha = fecha.minus({ months: 1 });\r\n }\r\n periodoSeleccionado.value = catalogos.meses.value[0];\r\n api.Cliente.Cliente.FinanciamientoApi.ObtenerDescuentosUltimoMesTodosContratos().then( a => {\r\n descuentos.value = JSON.parse(a.data.data);\r\n numContratos.value = descuentos.value\r\n .map(item => item.NumeroContrato)\r\n .filter((value, index, self) => self.indexOf(value) === index).length;\r\n descuentos.value.forEach(contrato => {\r\n contrato.Descuentos.forEach(descuento => {\r\n descuentosPago.value += descuento.Monto;\r\n });\r\n });\r\n });\r\n api.Cliente.Cliente.FinanciamientoApi.ObtenerInformacion(1).then(a => {\r\n let informacionFinanciamiento = a.data;\r\n if (informacionFinanciamiento.linkDescargaComplemento) {\r\n totalPagar.value = informacionFinanciamiento.totalPagar;\r\n tieneComplementoEstadoCuenta.value = informacionFinanciamiento.tieneComplementoEstadoCuenta;\r\n linkDescargaComplemento.value = informacionFinanciamiento.linkDescargaComplemento;\r\n }\r\n });\r\n obtenerAclaracion();\r\n await nextTick();\r\n modalDescuentos = new bootstrap.Modal(document.querySelector(\"#descuentosModal\") as HTMLDivElement);\r\n modalAclaraciones = new bootstrap.Modal(document.querySelector(\"#tablaAclaraciones\") as HTMLDivElement);\r\n});\r\n</script>\r\n","export default \"__VITE_ASSET__c22d5e6a__\"","/*! DataTables 1.12.1\n * ©2008-2022 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @description Paginate, search and order HTML tables\n * @version 1.12.1\n * @author SpryMedia Ltd\n * @contact www.datatables.net\n * @copyright SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n * MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\t// CommonJS environments without a window global must pass a\n\t\t\t\t// root. This will give an error otherwise\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ ) {\n\t\t\t\t$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window\n\t\t\t\t\trequire('jquery') :\n\t\t\t\t\trequire('jquery')( root );\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\twindow.DataTable = factory( jQuery, window, document );\n\t}\n}\n(function( $, window, document, undefined ) {\n\t\"use strict\";\n\n\t\n\tvar DataTable = function ( selector, options )\n\t{\n\t\t// When creating with `new`, create a new DataTable, returning the API instance\n\t\tif (this instanceof DataTable) {\n\t\t\treturn $(selector).DataTable(options);\n\t\t}\n\t\telse {\n\t\t\t// Argument switching\n\t\t\toptions = selector;\n\t\t}\n\t\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t * criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {object} jQuery object, filtered by the given selector.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Highlight every second row\n\t\t * oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t * // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t * oTable.fnFilter('Webkit');\n\t\t * oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t * oTable.fnFilter('');\n\t\t * } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t * criterion (\"applied\") or all elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t * selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t * entry in the array.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the data from the first row in the table\n\t\t * var data = oTable._('tr:first');\n\t\t *\n\t\t * // Do something useful with the data\n\t\t * alert( \"First cell is: \"+data[0] );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to 'Webkit' and get all data for\n\t\t * oTable.fnFilter('Webkit');\n\t\t * var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t * // Do something with the data\n\t\t * alert( data.length+\" rows matched the search\" );\n\t\t * } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t * only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t * used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t * or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t * @param {array|object} data The data to be added to the table. This can be:\n\t\t * <ul>\n\t\t * <li>1D array of data - add a single row with the data provided</li>\n\t\t * <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t * <li>object - data object when using <i>mData</i></li>\n\t\t * <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t * </ul>\n\t\t * @param {bool} [redraw=true] redraw the table or not\n\t\t * @returns {array} An array of integers, representing the list of indexes in\n\t\t * <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t\t * the table.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Global var for counter\n\t\t * var giCount = 2;\n\t\t *\n\t\t * $(document).ready(function() {\n\t\t * $('#example').dataTable();\n\t\t * } );\n\t\t *\n\t\t * function fnClickAddRow() {\n\t\t * $('#example').dataTable().fnAddData( [\n\t\t * giCount+\".1\",\n\t\t * giCount+\".2\",\n\t\t * giCount+\".3\",\n\t\t * giCount+\".4\" ]\n\t\t * );\n\t\t *\n\t\t * giCount++;\n\t\t * }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = Array.isArray(data) && ( Array.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable( {\n\t\t * \"sScrollY\": \"200px\",\n\t\t * \"bPaginate\": false\n\t\t * } );\n\t\t *\n\t\t * $(window).on('resize', function () {\n\t\t * oTable.fnAdjustColumnSizing();\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t * @param {bool} [bRedraw=true] redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t * oTable.fnClearTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t * @param {node} nTr the table row to 'close'\n\t\t * @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t * @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t * the TR element you want to delete\n\t\t * @param {function|null} [callBack] Callback function\n\t\t * @param {bool} [redraw=true] Redraw the table or not\n\t\t * @returns {array} The row that was deleted\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately remove the first row\n\t\t * oTable.fnDeleteRow( 0 );\n\t\t * } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t * @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnDestroy();\n\t\t * } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t * oTable.fnDraw();\n\t\t * } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can hold position.\n\t\t\tthis.api( true ).draw( complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t * @param {string} sInput String to filter the table on\n\t\t * @param {int|null} [iColumn] Column to limit filtering to\n\t\t * @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t * @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sometime later - filter...\n\t\t * oTable.fnFilter( 'test string' );\n\t\t * } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t * a TR node then the data source for the whole row will be returned. If given as a\n\t\t * TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t * cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t * data index for the row (see fnGetPosition) and the data for that row used.\n\t\t * @param {int} [col] Optional column index that you want the data of.\n\t\t * @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t * returned. If mRow is defined, just data for that row, and is iCol is\n\t\t * defined, only data for the designated cell is returned.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Row data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('tr').click( function () {\n\t\t * var data = oTable.fnGetData( this );\n\t\t * // ... do something with the array / object of data for the row\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Individual cell data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('td').click( function () {\n\t\t * var sData = oTable.fnGetData( this );\n\t\t * alert( 'The cell clicked on had the value of '+sData );\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t * @param {int} [iRow] Optional row index for the TR element you want\n\t\t * @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t * in the table's body, or iRow is defined, just the TR element requested.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the nodes from the table\n\t\t * var nNodes = oTable.fnGetNodes( );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t * @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t * @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t * if given as a cell, an array of [row index, column index (visible),\n\t\t * column index (all)] is given.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * $('#example tbody td').click( function () {\n\t\t * // Get the position of the current data from the node\n\t\t * var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t * // Get the data array for this row\n\t\t * var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t * // Update the data array and return the value\n\t\t * aData[ aPos[1] ] = 'clicked';\n\t\t * this.innerHTML = 'clicked';\n\t\t * } );\n\t\t *\n\t\t * // Init DataTables\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t * @param {node} nTr the table row to check\n\t\t * @returns {boolean} true if the row is currently open, false otherwise\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t * @param {node} nTr The table row to 'open'\n\t\t * @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t * @param {string} sClass Class to give the new TD cell\n\t\t * @returns {node} The row opened. Note that if the table row passed in as the\n\t\t * first parameter, is not found in the table, this method will silently\n\t\t * return.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t * @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t * or page number to jump to (integer), note that page 0 is the first page.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnPageChange( 'next' );\n\t\t * } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t * @param {int} iCol The column whose display should be changed\n\t\t * @param {bool} bShow Show (true) or hide (false) the column\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Hide the second column after initialisation\n\t\t * oTable.fnSetColumnVis( 1, false );\n\t\t * } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t * @returns {object} DataTables settings object. See\n\t\t * {@link DataTable.models.oSettings}\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * var oSettings = oTable.fnSettings();\n\t\t *\n\t\t * // Show an example parameter from the settings\n\t\t * alert( oSettings._iDisplayStart );\n\t\t * } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t * @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t * 'display index' if you have hidden data entries\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort immediately with columns 0 and 1\n\t\t * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t * } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t * @param {node} nNode the element to attach the sort listener to\n\t\t * @param {int} iColumn the column that a click on this node will sort on\n\t\t * @param {function} [fnCallback] callback function when sort is run\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort on column 1, when 'sorter' is clicked on\n\t\t * oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t * } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t * @param {object|array|string} mData Data to update the cell/row with\n\t\t * @param {node|int} mRow TR element you want to update or the aoData index\n\t\t * @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t * update a whole row.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t * @returns {int} 0 on success, 1 on error\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t * } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t * @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t * formats \"X\" and \"X.Y\" are also acceptable.\n\t\t * @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t * version, or false if this version of DataTales is not suitable\n\t\t * @method\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t * } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\t\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\t\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\t\n\t\tthis.oApi = this.internal = _ext.internal;\n\t\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\t\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\t\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\tvar $this = $(this);\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ), true );\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tvar s = allSettings[i];\n\t\t\t\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif (\n\t\t\t\t\ts.nTable == this ||\n\t\t\t\t\t(s.nTHead && s.nTHead.parentNode == this) ||\n\t\t\t\t\t(s.nTFoot && s.nTFoot.parentNode == this)\n\t\t\t\t) {\n\t\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\t\n\t\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn s.oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\ts.oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( s, 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( s.sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"sDestroyWidth\": $this[0].style.width,\n\t\t\t\t\"sInstance\": sId,\n\t\t\t\t\"sTableId\": sId\n\t\t\t} );\n\t\t\toSettings.nTable = this;\n\t\t\toSettings.oApi = _that.internal;\n\t\t\toSettings.oInit = oInit;\n\t\t\t\n\t\t\tallSettings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $this.dataTable();\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\t_fnCompatOpts( oInit );\n\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t\n\t\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t\t{\n\t\t\t\toInit.iDisplayLength = Array.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t\t}\n\t\t\t\n\t\t\t// Apply the defaults and init options to make a single init object will all\n\t\t\t// options defined from defaults and instance options.\n\t\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\t\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\t\"bPaginate\",\n\t\t\t\t\"bLengthChange\",\n\t\t\t\t\"bFilter\",\n\t\t\t\t\"bSort\",\n\t\t\t\t\"bSortMulti\",\n\t\t\t\t\"bInfo\",\n\t\t\t\t\"bProcessing\",\n\t\t\t\t\"bAutoWidth\",\n\t\t\t\t\"bSortClasses\",\n\t\t\t\t\"bServerSide\",\n\t\t\t\t\"bDeferRender\"\n\t\t\t] );\n\t\t\t_fnMap( oSettings, oInit, [\n\t\t\t\t\"asStripeClasses\",\n\t\t\t\t\"ajax\",\n\t\t\t\t\"fnServerData\",\n\t\t\t\t\"fnFormatNumber\",\n\t\t\t\t\"sServerMethod\",\n\t\t\t\t\"aaSorting\",\n\t\t\t\t\"aaSortingFixed\",\n\t\t\t\t\"aLengthMenu\",\n\t\t\t\t\"sPaginationType\",\n\t\t\t\t\"sAjaxSource\",\n\t\t\t\t\"sAjaxDataProp\",\n\t\t\t\t\"iStateDuration\",\n\t\t\t\t\"sDom\",\n\t\t\t\t\"bSortCellsTop\",\n\t\t\t\t\"iTabIndex\",\n\t\t\t\t\"fnStateLoadCallback\",\n\t\t\t\t\"fnStateSaveCallback\",\n\t\t\t\t\"renderer\",\n\t\t\t\t\"searchDelay\",\n\t\t\t\t\"rowId\",\n\t\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );\n\t\t\t\n\t\t\toSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t\t$this.addClass( oClasses.sTable );\n\t\t\t\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = Array.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tvar oLanguage = oSettings.oLanguage;\n\t\t\t$.extend( true, oLanguage, oInit.oLanguage );\n\t\t\t\n\t\t\tif ( oLanguage.sUrl )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\t$.ajax( {\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: oLanguage.sUrl,\n\t\t\t\t\tsuccess: function ( json ) {\n\t\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t\t$.extend( true, oLanguage, json, oSettings.oInit.oLanguage );\n\t\t\t\n\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'i18n', [oSettings]);\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t},\n\t\t\t\t\terror: function () {\n\t\t\t\t\t\t// Error occurred loading language file, continue on as best we can\n\t\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnCallbackFire( oSettings, null, 'i18n', [oSettings]);\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toClasses.sStripeOdd,\n\t\t\t\t\toClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\t\tvar rowOne = $this.children('tbody').find('tr').eq(0);\n\t\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\t\treturn rowOne.hasClass(el);\n\t\t\t} ) ) !== -1 ) {\n\t\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t\t * attributes are found\n\t\t\t */\n\t\t\tif ( rowOne.length ) {\n\t\t\t\tvar a = function ( cell, name ) {\n\t\t\t\t\treturn cell.getAttribute( 'data-'+name ) !== null ? name : null;\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$( rowOne[0] ).children('th, td').each( function (i, cell) {\n\t\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\t\n\t\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\t\n\t\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t\t_: i+'.display',\n\t\t\t\t\t\t\t\tsort: sort !== null ? i+'.@data-'+sort : undefined,\n\t\t\t\t\t\t\t\ttype: sort !== null ? i+'.@data-'+sort : undefined,\n\t\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t\t};\n\t\t\t\n\t\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\tvar features = oSettings.oFeatures;\n\t\t\tvar loadedInit = function () {\n\t\t\t\t/*\n\t\t\t\t * Sorting\n\t\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\t\tif ( oInit.aaSorting === undefined ) {\n\t\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t\t */\n\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\t\tif ( features.bSort ) {\n\t\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\t\n\t\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t\t} );\n\t\t\t\n\t\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t\t_fnSortAria( oSettings );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t\t}\n\t\t\t\t}, 'sc' );\n\t\t\t\n\t\t\t\n\t\t\t\t/*\n\t\t\t\t * Final init\n\t\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t\t */\n\t\t\t\n\t\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\t\tvar captions = $this.children('caption').each( function () {\n\t\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t\t} );\n\t\t\t\n\t\t\t\tvar thead = $this.children('thead');\n\t\t\t\tif ( thead.length === 0 ) {\n\t\t\t\t\tthead = $('<thead/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\t\tvar tbody = $this.children('tbody');\n\t\t\t\tif ( tbody.length === 0 ) {\n\t\t\t\t\ttbody = $('<tbody/>').insertAfter(thead);\n\t\t\t\t}\n\t\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\t\tvar tfoot = $this.children('tfoot');\n\t\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") ) {\n\t\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\t\ttfoot = $('<tfoot/>').appendTo($this);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t\t$this.addClass( oClasses.sNoFooter );\n\t\t\t\t}\n\t\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Check if there is data passing into the constructor */\n\t\t\t\tif ( oInit.aaData ) {\n\t\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' ) {\n\t\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t\t * to replace it with Ajax data\n\t\t\t\t\t */\n\t\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Copy the data index array */\n\t\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t\t * language processor)\n\t\t\t\t */\n\t\t\t\tif ( bInitHandedOff === false ) {\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t}\n\t\t\t};\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\tfeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit, loadedInit );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tloadedInit();\n\t\t\t}\n\t\t\t\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\t\n\t\n\t/*\n\t * It is useful to have variables which are scoped locally so only the\n\t * DataTables functions can access them and they don't leak into global space.\n\t * At the same time these functions are often useful over multiple files in the\n\t * core and API, so we list, or at least document, all variables which are used\n\t * by DataTables as private variables here. This also ensures that there is no\n\t * clashing of variable names and that they can easily referenced for reuse.\n\t */\n\t\n\t\n\t// Defined else where\n\t// _selector_run\n\t// _selector_opts\n\t// _selector_first\n\t// _selector_row_indexes\n\t\n\tvar _ext; // DataTable.ext\n\tvar _Api; // DataTable.Api\n\tvar _api_register; // DataTable.Api.register\n\tvar _api_registerPlural; // DataTable.Api.registerPlural\n\t\n\tvar _re_dic = {};\n\tvar _re_new_lines = /[\\r\\n\\u2028]/g;\n\tvar _re_html = /<.*?>/g;\n\t\n\t// This is not strict ISO8601 - Date.parse() is quite lax, although\n\t// implementations differ between browsers.\n\tvar _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// http://en.wikipedia.org/wiki/Foreign_exchange_market\n\t// - \\u20BD - Russian ruble.\n\t// - \\u20a9 - South Korean Won\n\t// - \\u20BA - Turkish Lira\n\t// - \\u20B9 - Indian Rupee\n\t// - R - Brazil (R$) and South Africa\n\t// - fr - Swiss Franc\n\t// - kr - Swedish krona, Norwegian krone and Danish krone\n\t// - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n\t// - Ƀ - Bitcoin\n\t// - Ξ - Ethereum\n\t// standards as thousands separators.\n\tvar _re_formatted_numeric = /['\\u00A0,$£€¥%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfkɃΞ]/gi;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\t// If empty return immediately so there must be a number if it is a\n\t\t// formatted string (this stops the string \"k\", or \"kr\", etc being detected\n\t\t// as a formatted number for currency\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn !isNaN( parseFloat(d) ) && isFinite( d );\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] ) {\n\t\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t// Basically the same as _pluck, but rather than looping over `a` we use `order`\n\t// as the indexes to pick from `a`\n\tvar _pluck_order = function ( a, order, prop, prop2 )\n\t{\n\t\tvar out = [];\n\t\tvar i=0, ien=order.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[ order[i] ][ prop ] ) {\n\t\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _range = function ( len, start )\n\t{\n\t\tvar out = [];\n\t\tvar end;\n\t\n\t\tif ( start === undefined ) {\n\t\t\tstart = 0;\n\t\t\tend = len;\n\t\t}\n\t\telse {\n\t\t\tend = start;\n\t\t\tstart = len;\n\t\t}\n\t\n\t\tfor ( var i=start ; i<end ; i++ ) {\n\t\t\tout.push( i );\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _removeEmpty = function ( a )\n\t{\n\t\tvar out = [];\n\t\n\t\tfor ( var i=0, ien=a.length ; i<ien ; i++ ) {\n\t\t\tif ( a[i] ) { // careful - will remove all falsy values!\n\t\t\t\tout.push( a[i] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _stripHtml = function ( d ) {\n\t\treturn d.replace( _re_html, '' );\n\t};\n\t\n\t\n\t/**\n\t * Determine if all values in the array are unique. This means we can short\n\t * cut the _unique method at the cost of a single loop. A sorted array is used\n\t * to easily check the values.\n\t *\n\t * @param {array} src Source array\n\t * @return {boolean} true if all unique, false otherwise\n\t * @ignore\n\t */\n\tvar _areAllUnique = function ( src ) {\n\t\tif ( src.length < 2 ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar sorted = src.slice().sort();\n\t\tvar last = sorted[0];\n\t\n\t\tfor ( var i=1, ien=sorted.length ; i<ien ; i++ ) {\n\t\t\tif ( sorted[i] === last ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tlast = sorted[i];\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Find the unique elements in a source array.\n\t *\n\t * @param {array} src Source array\n\t * @return {array} Array of unique items\n\t * @ignore\n\t */\n\tvar _unique = function ( src )\n\t{\n\t\tif ( _areAllUnique( src ) ) {\n\t\t\treturn src.slice();\n\t\t}\n\t\n\t\t// A faster unique method is to use object keys to identify used values,\n\t\t// but this doesn't work with arrays or objects, which we must also\n\t\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t\t// information.\n\t\tvar\n\t\t\tout = [],\n\t\t\tval,\n\t\t\ti, ien=src.length,\n\t\t\tj, k=0;\n\t\n\t\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\t\tval = src[i];\n\t\n\t\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\t\tif ( out[j] === val ) {\n\t\t\t\t\tcontinue again;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tout.push( val );\n\t\t\tk++;\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t// Surprisingly this is faster than [].concat.apply\n\t// https://jsperf.com/flatten-an-array-loop-vs-reduce/2\n\tvar _flatten = function (out, val) {\n\t\tif (Array.isArray(val)) {\n\t\t\tfor (var i=0 ; i<val.length ; i++) {\n\t\t\t\t_flatten(out, val[i]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tout.push(val);\n\t\t}\n\t \n\t\treturn out;\n\t}\n\t\n\tvar _includes = function (search, start) {\n\t\tif (start === undefined) {\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\treturn this.indexOf(search, start) !== -1;\t\n\t};\n\t\n\t// Array.isArray polyfill.\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\n\tif (! Array.isArray) {\n\t Array.isArray = function(arg) {\n\t return Object.prototype.toString.call(arg) === '[object Array]';\n\t };\n\t}\n\t\n\tif (! Array.prototype.includes) {\n\t\tArray.prototype.includes = _includes;\n\t}\n\t\n\t// .trim() polyfill\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim\n\tif (!String.prototype.trim) {\n\t String.prototype.trim = function () {\n\t return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\t };\n\t}\n\t\n\tif (! String.prototype.includes) {\n\t\tString.prototype.includes = _includes;\n\t}\n\t\n\t/**\n\t * DataTables utility methods\n\t * \n\t * This namespace provides helper methods that DataTables uses internally to\n\t * create a DataTable, but which are not exclusively used only for DataTables.\n\t * These methods can be used by extension authors to save the duplication of\n\t * code.\n\t *\n\t * @namespace\n\t */\n\tDataTable.util = {\n\t\t/**\n\t\t * Throttle the calls to a function. Arguments and context are maintained\n\t\t * for the throttled function.\n\t\t *\n\t\t * @param {function} fn Function to be called\n\t\t * @param {integer} freq Call frequency in mS\n\t\t * @return {function} Wrapped function\n\t\t */\n\t\tthrottle: function ( fn, freq ) {\n\t\t\tvar\n\t\t\t\tfrequency = freq !== undefined ? freq : 200,\n\t\t\t\tlast,\n\t\t\t\ttimer;\n\t\n\t\t\treturn function () {\n\t\t\t\tvar\n\t\t\t\t\tthat = this,\n\t\t\t\t\tnow = +new Date(),\n\t\t\t\t\targs = arguments;\n\t\n\t\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\t\tclearTimeout( timer );\n\t\n\t\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\t\tlast = undefined;\n\t\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t\t}, frequency );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlast = now;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Escape a string such that it can be used in a regular expression\n\t\t *\n\t\t * @param {string} val string to escape\n\t\t * @returns {string} escaped string\n\t\t */\n\t\tescapeRegex: function ( val ) {\n\t\t\treturn val.replace( _re_escape_regex, '\\\\$1' );\n\t\t},\n\t\n\t\t/**\n\t\t * Create a function that will write to a nested object or array\n\t\t * @param {*} source JSON notation string\n\t\t * @returns Write function\n\t\t */\n\t\tset: function ( source ) {\n\t\t\tif ( $.isPlainObject( source ) ) {\n\t\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t\t * for `mRender` which is read only.\n\t\t\t\t */\n\t\t\t\treturn DataTable.util.set( source._ );\n\t\t\t}\n\t\t\telse if ( source === null ) {\n\t\t\t\t// Nothing to do when the data source is null\n\t\t\t\treturn function () {};\n\t\t\t}\n\t\t\telse if ( typeof source === 'function' ) {\n\t\t\t\treturn function (data, val, meta) {\n\t\t\t\t\tsource( data, 'set', val, meta );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof source === 'string' && (source.indexOf('.') !== -1 ||\n\t\t\t\t\t source.indexOf('[') !== -1 || source.indexOf('(') !== -1) )\n\t\t\t{\n\t\t\t\t// Like the get, we need to get data from a nested object\n\t\t\t\tvar setData = function (data, val, src) {\n\t\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ ) {\n\t\t\t\t\t\t// Protect against prototype pollution\n\t\t\t\t\t\tif (a[i] === '__proto__' || a[i] === 'constructor') {\n\t\t\t\t\t\t\tthrow new Error('Cannot set prototype values');\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\t\n\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\t\n\t\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t// We've been asked to save data to an array, but it\n\t\t\t\t\t\t\t\t// isn't array data to be saved. Best that can be done\n\t\t\t\t\t\t\t\t// is to just save the value.\n\t\t\t\t\t\t\t\tdata[ a[i] ] = val;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation ) {\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined ) {\n\t\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\t\tif ( aLast.match(__reFn ) ) {\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\t\treturn setData( data, val, source );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Array or flat object mapping\n\t\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\t\tdata[source] = val;\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * Create a function that will read nested objects from arrays, based on JSON notation\n\t\t * @param {*} source JSON notation string\n\t\t * @returns Value read\n\t\t */\n\t\tget: function ( source ) {\n\t\t\tif ( $.isPlainObject( source ) ) {\n\t\t\t\t// Build an object of get functions, and wrap them in a single call\n\t\t\t\tvar o = {};\n\t\t\t\t$.each( source, function (key, val) {\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\to[key] = DataTable.util.get( val );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\n\t\t\t\treturn function (data, type, row, meta) {\n\t\t\t\t\tvar t = o[type] || o._;\n\t\t\t\t\treturn t !== undefined ?\n\t\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\t\tdata;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( source === null ) {\n\t\t\t\t// Give an empty string for rendering / sorting etc\n\t\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof source === 'function' ) {\n\t\t\t\treturn function (data, type, row, meta) {\n\t\t\t\t\treturn source( data, type, row, meta );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if ( typeof source === 'string' && (source.indexOf('.') !== -1 ||\n\t\t\t\t\t source.indexOf('[') !== -1 || source.indexOf('(') !== -1) )\n\t\t\t{\n\t\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t\t * be used if defined, rather than throwing an error\n\t\t\t\t */\n\t\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\t\n\t\t\t\t\tif ( src !== \"\" ) {\n\t\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\t\n\t\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ ) {\n\t\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\t\n\t\t\t\t\t\t\tif ( arrayNotation ) {\n\t\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\n\t\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tout = [];\n\t\t\n\t\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\t\n\t\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\t\tif ( Array.isArray( data ) ) {\n\t\t\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\t\n\t\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if ( funcNotation ) {\n\t\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined ) {\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\treturn data;\n\t\t\t\t};\n\t\t\n\t\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\t\treturn fetchData( data, type, source );\n\t\t\t\t};\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Array or flat object mapping\n\t\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\t\treturn data[source];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\t\n\t/**\n\t * Create a mapping object that allows camel case parameters to be looked up\n\t * for their Hungarian counterparts. The mapping is stored in a private\n\t * parameter called `_hungarianMap` which can be accessed on the source object.\n\t * @param {object} o\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnHungarianMap ( o )\n\t{\n\t\tvar\n\t\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\t\tmatch,\n\t\t\tnewKey,\n\t\t\tmap = {};\n\t\n\t\t$.each( o, function (key, val) {\n\t\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\t\n\t\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t\t{\n\t\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\t\tmap[ newKey ] = key;\n\t\n\t\t\t\tif ( match[1] === 'o' )\n\t\t\t\t{\n\t\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\n\t\to._hungarianMap = map;\n\t}\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian, based on a Hungarian map\n\t * created by _fnHungarianMap.\n\t * @param {object} src The model object which holds all parameters that can be\n\t * mapped.\n\t * @param {object} user The object to convert from camel case to Hungarian.\n\t * @param {boolean} force When set to `true`, properties which already have a\n\t * Hungarian value in the `user` object will be overwritten. Otherwise they\n\t * won't be.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCamelToHungarian ( src, user, force )\n\t{\n\t\tif ( ! src._hungarianMap ) {\n\t\t\t_fnHungarianMap( src );\n\t\t}\n\t\n\t\tvar hungarianKey;\n\t\n\t\t$.each( user, function (key, val) {\n\t\t\thungarianKey = src._hungarianMap[ key ];\n\t\n\t\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t\t{\n\t\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t\t{\n\t\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\t\n\t\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Language compatibility - when certain options are given, and others aren't, we\n\t * need to duplicate the values over, in order to provide backwards compatibility\n\t * with older language files.\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLanguageCompat( lang )\n\t{\n\t\t// Note the use of the Hungarian notation for the parameters in this method as\n\t\t// this is called after the mapping of camelCase to Hungarian\n\t\tvar defaults = DataTable.defaults.oLanguage;\n\t\n\t\t// Default mapping\n\t\tvar defaultDecimal = defaults.sDecimal;\n\t\tif ( defaultDecimal ) {\n\t\t\t_addNumericSort( defaultDecimal );\n\t\t}\n\t\n\t\tif ( lang ) {\n\t\t\tvar zeroRecords = lang.sZeroRecords;\n\t\n\t\t\t// Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t\t// sZeroRecords - assuming that is given.\n\t\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t\t{\n\t\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t\t}\n\t\n\t\t\t// Likewise with loading records\n\t\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t\t{\n\t\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t\t}\n\t\n\t\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\t\tif ( lang.sInfoThousands ) {\n\t\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t\t}\n\t\n\t\t\tvar decimal = lang.sDecimal;\n\t\t\tif ( decimal && defaultDecimal !== decimal ) {\n\t\t\t\t_addNumericSort( decimal );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Map one parameter onto another\n\t * @param {object} o Object to map\n\t * @param {*} knew The new parameter name\n\t * @param {*} old The old parameter name\n\t */\n\tvar _fnCompatMap = function ( o, knew, old ) {\n\t\tif ( o[ knew ] !== undefined ) {\n\t\t\to[ old ] = o[ knew ];\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for the main DT options. Note that the new\n\t * options are mapped onto the old parameters, so this is an external interface\n\t * change only.\n\t * @param {object} init Object to map\n\t */\n\tfunction _fnCompatOpts ( init )\n\t{\n\t\t_fnCompatMap( init, 'ordering', 'bSort' );\n\t\t_fnCompatMap( init, 'orderMulti', 'bSortMulti' );\n\t\t_fnCompatMap( init, 'orderClasses', 'bSortClasses' );\n\t\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t\t_fnCompatMap( init, 'order', 'aaSorting' );\n\t\t_fnCompatMap( init, 'orderFixed', 'aaSortingFixed' );\n\t\t_fnCompatMap( init, 'paging', 'bPaginate' );\n\t\t_fnCompatMap( init, 'pagingType', 'sPaginationType' );\n\t\t_fnCompatMap( init, 'pageLength', 'iDisplayLength' );\n\t\t_fnCompatMap( init, 'searching', 'bFilter' );\n\t\n\t\t// Boolean initialisation of x-scrolling\n\t\tif ( typeof init.sScrollX === 'boolean' ) {\n\t\t\tinit.sScrollX = init.sScrollX ? '100%' : '';\n\t\t}\n\t\tif ( typeof init.scrollX === 'boolean' ) {\n\t\t\tinit.scrollX = init.scrollX ? '100%' : '';\n\t\t}\n\t\n\t\t// Column search objects are in an array, so it needs to be converted\n\t\t// element by element\n\t\tvar searchCols = init.aoSearchCols;\n\t\n\t\tif ( searchCols ) {\n\t\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\t\tif ( searchCols[i] ) {\n\t\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for column options. Note that the new options\n\t * are mapped onto the old parameters, so this is an external interface change\n\t * only.\n\t * @param {object} init Object to map\n\t */\n\tfunction _fnCompatCols ( init )\n\t{\n\t\t_fnCompatMap( init, 'orderable', 'bSortable' );\n\t\t_fnCompatMap( init, 'orderData', 'aDataSort' );\n\t\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\t\n\t\t// orderData can be given as an integer\n\t\tvar dataSort = init.aDataSort;\n\t\tif ( typeof dataSort === 'number' && ! Array.isArray( dataSort ) ) {\n\t\t\tinit.aDataSort = [ dataSort ];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Browser feature detection for capabilities, quirks\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBrowserDetect( settings )\n\t{\n\t\t// We don't need to do this every time DataTables is constructed, the values\n\t\t// calculated are specific to the browser and OS configuration which we\n\t\t// don't expect to change between initialisations\n\t\tif ( ! DataTable.__browser ) {\n\t\t\tvar browser = {};\n\t\t\tDataTable.__browser = browser;\n\t\n\t\t\t// Scrolling feature / quirks detection\n\t\t\tvar n = $('<div/>')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: $(window).scrollLeft()*-1, // allow for scrolling\n\t\t\t\t\theight: 1,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t$('<div/>')\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar outer = n.children();\n\t\t\tvar inner = outer.children();\n\t\n\t\t\t// Numbers below, in order, are:\n\t\t\t// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n\t\t\t//\n\t\t\t// IE6 XP: 100 100 100 83\n\t\t\t// IE7 Vista: 100 100 100 83\n\t\t\t// IE 8+ Windows: 83 83 100 83\n\t\t\t// Evergreen Windows: 83 83 100 83\n\t\t\t// Evergreen Mac with scrollbars: 85 85 100 85\n\t\t\t// Evergreen Mac without scrollbars: 100 100 100 100\n\t\n\t\t\t// Get scrollbar width\n\t\t\tbrowser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;\n\t\n\t\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t\t// element is contained without forcing scrolling\n\t\t\tbrowser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;\n\t\n\t\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t\t// scrollbar on the left, rather than the right.\n\t\t\tbrowser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;\n\t\n\t\t\t// IE8- don't provide height and width for getBoundingClientRect\n\t\t\tbrowser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n\t\n\t\t\tn.remove();\n\t\t}\n\t\n\t\t$.extend( settings.oBrowser, DataTable.__browser );\n\t\tsettings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} nTh The th element for this column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, $(nTh).data() );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iCol column index to consider\n\t * @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions, true );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\t\tif ( oOptions.sClass ) {\n\t\t\t\tth.addClass( oOptions.sClass );\n\t\t\t}\n\t\n\t\t\tvar origClass = oCol.sClass;\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t// Merge class from previously defined classes with this one, rather than just\n\t\t\t// overwriting it in the extend above\n\t\t\tif (origClass !== oCol.sClass) {\n\t\t\t\toCol.sClass = origClass + ' ' + oCol.sClass;\n\t\t\t}\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\toCol._setter = null;\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t// Indicate if DataTables should read DOM data as an object or array\n\t\t// Used in _fnGetRowElements\n\t\tif ( typeof mDataSrc !== 'number' ) {\n\t\t\toSettings._rowReadObject = true;\n\t\t}\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\n\t\tvar scroll = settings.oScroll;\n\t\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t\t{\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n\t}\n\t\n\t\n\t/**\n\t * Convert the index of a visible column to the index in the data array (take account\n\t * of hidden columns)\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iMatch Visible column index to lookup\n\t * @returns {int} i the data index\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\n\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\taiVis[iMatch] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Convert the index of an index in the data array and convert it to the visible\n\t * column index (take account of hidden columns)\n\t * @param {int} iMatch Column index to lookup\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {int} i the data index\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\n\t\treturn iPos !== -1 ? iPos : null;\n\t}\n\t\n\t\n\t/**\n\t * Get the number of visible columns\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {int} i the number of visible columns\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnVisbleColumns( oSettings )\n\t{\n\t\tvar vis = 0;\n\t\n\t\t// No reduce in IE8, use a loop for now\n\t\t$.each( oSettings.aoColumns, function ( i, col ) {\n\t\t\tif ( col.bVisible && $(col.nTh).css('display') !== 'none' ) {\n\t\t\t\tvis++;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn vis;\n\t}\n\t\n\t\n\t/**\n\t * Get an array of column indexes that match a given property\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sParam Parameter in aoColumns to look for - typically\n\t * bVisible or bSearchable\n\t * @returns {array} Array of indexes with matched properties\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetColumns( oSettings, sParam )\n\t{\n\t\tvar a = [];\n\t\n\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\tif ( val[sParam] ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn a;\n\t}\n\t\n\t\n\t/**\n\t * Calculate the 'type' of a column\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnTypes ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar data = settings.aoData;\n\t\tvar types = DataTable.ext.type.detect;\n\t\tvar i, ien, j, jen, k, ken;\n\t\tvar col, cell, detectedType, cache;\n\t\n\t\t// For each column, spin over the \n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcol = columns[i];\n\t\t\tcache = [];\n\t\n\t\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\t\tcol.sType = col._sManualType;\n\t\t\t}\n\t\t\telse if ( ! col.sType ) {\n\t\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\t\n\t\t\t\t\t\t// If null, then this type can't apply to this column, so\n\t\t\t\t\t\t// rather than testing all cells, break out. There is an\n\t\t\t\t\t\t// exception for the last type which is `html`. We need to\n\t\t\t\t\t\t// scan all rows since it is possible to mix string and HTML\n\t\t\t\t\t\t// types\n\t\t\t\t\t\tif ( ! detectedType && j !== types.length-1 ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Only a single match is needed for html type since it is\n\t\t\t\t\t\t// bottom of the pile and very similar to string - but it\n\t\t\t\t\t\t// must not be empty\n\t\t\t\t\t\tif ( detectedType === 'html' && ! _empty(cache[k]) ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t\t// type\n\t\t\t\t\tif ( detectedType ) {\n\t\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fall back - if no type was detected, always use string\n\t\t\t\tif ( ! col.sType ) {\n\t\t\t\t\tcol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Take the column definitions and static columns arrays and calculate how\n\t * they relate to column indexes. The callback function will then apply the\n\t * definition found for a column to a suitable configuration object.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t * @param {array} aoCols The aoColumns array that defines columns individually\n\t * @param {function} fn Callback function - takes two parameters, the calculated\n\t * column index and the definition for that column.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, def;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Column definitions with aTargets\n\t\tif ( aoColDefs )\n\t\t{\n\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tdef = aoColDefs[i];\n\t\n\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\tvar aTargets = def.target !== undefined\n\t\t\t\t\t? def.target\n\t\t\t\t\t: def.targets !== undefined\n\t\t\t\t\t\t? def.targets\n\t\t\t\t\t\t: def.aTargets;\n\t\n\t\t\t\tif ( ! Array.isArray( aTargets ) )\n\t\t\t\t{\n\t\t\t\t\taTargets = [ aTargets ];\n\t\t\t\t}\n\t\n\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfn( k, def );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// Statically defined columns array\n\t\tif ( aoCols )\n\t\t{\n\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfn( i, aoCols[i] );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Add a data array to the table, creating DOM node etc. This is the parallel to\n\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t * DOM source.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} aData data array to be added\n\t * @param {node} [nTr] TR element to add to the table - optional. If not given,\n\t * DataTables will create a row automatically\n\t * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t * if nTr is.\n\t * @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n\t{\n\t\t/* Create the object for storing information about this new row */\n\t\tvar iRow = oSettings.aoData.length;\n\t\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\t\tsrc: nTr ? 'dom' : 'data',\n\t\t\tidx: iRow\n\t\t} );\n\t\n\t\toData._aData = aDataIn;\n\t\toSettings.aoData.push( oData );\n\t\n\t\t/* Create the cells */\n\t\tvar nTd, sThisType;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Invalidate the column types as the new data needs to be revalidated\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tcolumns[i].sType = null;\n\t\t}\n\t\n\t\t/* Add to the display array */\n\t\toSettings.aiDisplayMaster.push( iRow );\n\t\n\t\tvar id = oSettings.rowIdFn( aDataIn );\n\t\tif ( id !== undefined ) {\n\t\t\toSettings.aIds[ id ] = oData;\n\t\t}\n\t\n\t\t/* Create the DOM information, or register it if already present */\n\t\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t\t{\n\t\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t\t}\n\t\n\t\treturn iRow;\n\t}\n\t\n\t\n\t/**\n\t * Add one or more TR elements to the table. Generally we'd expect to\n\t * use this for reading data from a DOM sourced table, but it could be\n\t * used for an TR element. Note that if a TR is given, it is used (i.e.\n\t * it is not cloned).\n\t * @param {object} settings dataTables settings object\n\t * @param {array|node|jQuery} trs The TR element(s) to add to the table\n\t * @returns {array} Array of indexes for the added rows\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddTr( settings, trs )\n\t{\n\t\tvar row;\n\t\n\t\t// Allow an individual node to be passed in\n\t\tif ( ! (trs instanceof $) ) {\n\t\t\ttrs = $(trs);\n\t\t}\n\t\n\t\treturn trs.map( function (i, el) {\n\t\t\trow = _fnGetRowElements( settings, el );\n\t\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Take a TR element and convert it to an index in aoData\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} n the TR element to find\n\t * @returns {int} index if the node is found, null if not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToDataIndex( oSettings, n )\n\t{\n\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t}\n\t\n\t\n\t/**\n\t * Take a TD element and convert it into a column data index (not the visible index)\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iRow The row number the TD/TH can be found in\n\t * @param {node} n The TD/TH element to find\n\t * @returns {int} index if the node is found, -1 if not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t{\n\t\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n\t}\n\t\n\t\n\t/**\n\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t * @param {object} settings dataTables settings object\n\t * @param {int} rowIdx aoData row id\n\t * @param {int} colIdx Column index\n\t * @param {string} type data get type ('display', 'type' 'filter|search' 'sort|order')\n\t * @returns {*} Cell data\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n\t{\n\t\tif (type === 'search') {\n\t\t\ttype = 'filter';\n\t\t}\n\t\telse if (type === 'order') {\n\t\t\ttype = 'sort';\n\t\t}\n\t\n\t\tvar draw = settings.iDraw;\n\t\tvar col = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\tvar defaultContent = col.sDefaultContent;\n\t\tvar cellData = col.fnGetData( rowData, type, {\n\t\t\tsettings: settings,\n\t\t\trow: rowIdx,\n\t\t\tcol: colIdx\n\t\t} );\n\t\n\t\tif ( cellData === undefined ) {\n\t\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\t\" for row \"+rowIdx+\", column \"+colIdx, 4 );\n\t\t\t\tsettings.iDrawError = draw;\n\t\t\t}\n\t\t\treturn defaultContent;\n\t\t}\n\t\n\t\t// When the data source is null and a specific data type is requested (i.e.\n\t\t// not the original data), we can use default column data\n\t\tif ( (cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined ) {\n\t\t\tcellData = defaultContent;\n\t\t}\n\t\telse if ( typeof cellData === 'function' ) {\n\t\t\t// If the data source is a function, then we run it and use the return,\n\t\t\t// executing in the scope of the data object (for instances)\n\t\t\treturn cellData.call( rowData );\n\t\t}\n\t\n\t\tif ( cellData === null && type === 'display' ) {\n\t\t\treturn '';\n\t\t}\n\t\n\t\tif ( type === 'filter' ) {\n\t\t\tvar fomatters = DataTable.ext.type.search;\n\t\n\t\t\tif ( fomatters[ col.sType ] ) {\n\t\t\t\tcellData = fomatters[ col.sType ]( cellData );\n\t\t\t}\n\t\t}\n\t\n\t\treturn cellData;\n\t}\n\t\n\t\n\t/**\n\t * Set the value for a specific cell, into the internal data cache\n\t * @param {object} settings dataTables settings object\n\t * @param {int} rowIdx aoData row id\n\t * @param {int} colIdx Column index\n\t * @param {*} val Value to set\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n\t{\n\t\tvar col = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\n\t\tcol.fnSetData( rowData, val, {\n\t\t\tsettings: settings,\n\t\t\trow: rowIdx,\n\t\t\tcol: colIdx\n\t\t} );\n\t}\n\t\n\t\n\t// Private variable that is used to match action syntax in the data property object\n\tvar __reArray = /\\[.*?\\]$/;\n\tvar __reFn = /\\(\\)$/;\n\t\n\t/**\n\t * Split string on periods, taking into account escaped periods\n\t * @param {string} str String to split\n\t * @return {array} Split string\n\t */\n\tfunction _fnSplitObjNotation( str )\n\t{\n\t\treturn $.map( str.match(/(\\\\.|[^\\.])+/g) || [''], function ( s ) {\n\t\t\treturn s.replace(/\\\\\\./g, '.');\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to get data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t * @param {string|int|function} mSource The data source for the object\n\t * @returns {function} Data get function\n\t * @memberof DataTable#oApi\n\t */\n\tvar _fnGetObjectDataFn = DataTable.util.get;\n\t\n\t\n\t/**\n\t * Return a function that can be used to set data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t * @param {string|int|function} mSource The data source for the object\n\t * @returns {function} Data set function\n\t * @memberof DataTable#oApi\n\t */\n\tvar _fnSetObjectDataFn = DataTable.util.set;\n\t\n\t\n\t/**\n\t * Return an array with the full table data\n\t * @param {object} oSettings dataTables settings object\n\t * @returns array {array} aData Master data array\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetDataMaster ( settings )\n\t{\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t}\n\t\n\t\n\t/**\n\t * Nuke the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnClearTable( settings )\n\t{\n\t\tsettings.aoData.length = 0;\n\t\tsettings.aiDisplayMaster.length = 0;\n\t\tsettings.aiDisplay.length = 0;\n\t\tsettings.aIds = {};\n\t}\n\t\n\t\n\t /**\n\t * Take an array of integers (index array) and remove a target integer (value - not\n\t * the key!)\n\t * @param {array} a Index array to target\n\t * @param {int} iTarget value to find\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDeleteIndex( a, iTarget, splice )\n\t{\n\t\tvar iTargetIndex = -1;\n\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( a[i] == iTarget )\n\t\t\t{\n\t\t\t\tiTargetIndex = i;\n\t\t\t}\n\t\t\telse if ( a[i] > iTarget )\n\t\t\t{\n\t\t\t\ta[i]--;\n\t\t\t}\n\t\t}\n\t\n\t\tif ( iTargetIndex != -1 && splice === undefined )\n\t\t{\n\t\t\ta.splice( iTargetIndex, 1 );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Mark cached data as invalid such that a re-read of the data will occur when\n\t * the cached data is next requested. Also update from the data source object.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {int} rowIdx Row index to invalidate\n\t * @param {string} [src] Source to invalidate from: undefined, 'auto', 'dom'\n\t * or 'data'\n\t * @param {int} [colIdx] Column index to invalidate. If undefined the whole\n\t * row will be invalidated\n\t * @memberof DataTable#oApi\n\t *\n\t * @todo For the modularisation of v1.11 this will need to become a callback, so\n\t * the sort and filter methods can subscribe to it. That will required\n\t * initialisation options for sorting, which is why it is not already baked in\n\t */\n\tfunction _fnInvalidate( settings, rowIdx, src, colIdx )\n\t{\n\t\tvar row = settings.aoData[ rowIdx ];\n\t\tvar i, ien;\n\t\tvar cellWrite = function ( cell, col ) {\n\t\t\t// This is very frustrating, but in IE if you just write directly\n\t\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t\t// even if there is a reference to them elsewhere\n\t\t\twhile ( cell.childNodes.length ) {\n\t\t\t\tcell.removeChild( cell.firstChild );\n\t\t\t}\n\t\n\t\t\tcell.innerHTML = _fnGetCellData( settings, rowIdx, col, 'display' );\n\t\t};\n\t\n\t\t// Are we reading last data from DOM or the data object?\n\t\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t\t// Read the data from the DOM\n\t\t\trow._aData = _fnGetRowElements(\n\t\t\t\t\tsettings, row, colIdx, colIdx === undefined ? undefined : row._aData\n\t\t\t\t)\n\t\t\t\t.data;\n\t\t}\n\t\telse {\n\t\t\t// Reading from data object, update the DOM\n\t\t\tvar cells = row.anCells;\n\t\n\t\t\tif ( cells ) {\n\t\t\t\tif ( colIdx !== undefined ) {\n\t\t\t\t\tcellWrite( cells[colIdx], colIdx );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tcellWrite( cells[i], i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// For both row and cell invalidation, the cached data for sorting and\n\t\t// filtering is nulled out\n\t\trow._aSortData = null;\n\t\trow._aFilterData = null;\n\t\n\t\t// Invalidate the type for a specific column (if given) or all columns since\n\t\t// the data might have changed\n\t\tvar cols = settings.aoColumns;\n\t\tif ( colIdx !== undefined ) {\n\t\t\tcols[ colIdx ].sType = null;\n\t\t}\n\t\telse {\n\t\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\t\tcols[i].sType = null;\n\t\t\t}\n\t\n\t\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t\t_fnRowAttributes( settings, row );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a data source object from an HTML row, reading the contents of the\n\t * cells that are in the row.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {node|object} TR element from which to read data or existing row\n\t * object from which to re-read the data from the cells\n\t * @param {int} [colIdx] Optional column index\n\t * @param {array|object} [d] Data source object. If `colIdx` is given then this\n\t * parameter should also be given and will be used to write the data into.\n\t * Only the column in question will be written\n\t * @returns {object} Object with two parameters: `data` the data read, in\n\t * document order, and `cells` and array of nodes (they can be useful to the\n\t * caller, so rather than needing a second traversal to get them, just return\n\t * them from here).\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetRowElements( settings, row, colIdx, d )\n\t{\n\t\tvar\n\t\t\ttds = [],\n\t\t\ttd = row.firstChild,\n\t\t\tname, col, o, i=0, contents,\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tobjectRead = settings._rowReadObject;\n\t\n\t\t// Allow the data object to be passed in, or construct\n\t\td = d !== undefined ?\n\t\t\td :\n\t\t\tobjectRead ?\n\t\t\t\t{} :\n\t\t\t\t[];\n\t\n\t\tvar attr = function ( str, td ) {\n\t\t\tif ( typeof str === 'string' ) {\n\t\t\t\tvar idx = str.indexOf('@');\n\t\n\t\t\t\tif ( idx !== -1 ) {\n\t\t\t\t\tvar attr = str.substring( idx+1 );\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( str );\n\t\t\t\t\tsetter( d, td.getAttribute( attr ) );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\t// Read data from a cell and store into the data object\n\t\tvar cellProcess = function ( cell ) {\n\t\t\tif ( colIdx === undefined || colIdx === i ) {\n\t\t\t\tcol = columns[i];\n\t\t\t\tcontents = (cell.innerHTML).trim();\n\t\n\t\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\t\tvar setter = _fnSetObjectDataFn( col.mData._ );\n\t\t\t\t\tsetter( d, contents );\n\t\n\t\t\t\t\tattr( col.mData.sort, cell );\n\t\t\t\t\tattr( col.mData.type, cell );\n\t\t\t\t\tattr( col.mData.filter, cell );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Depending on the `data` option for the columns the data can\n\t\t\t\t\t// be read to either an object or an array.\n\t\t\t\t\tif ( objectRead ) {\n\t\t\t\t\t\tif ( ! col._setter ) {\n\t\t\t\t\t\t\t// Cache the setter function\n\t\t\t\t\t\t\tcol._setter = _fnSetObjectDataFn( col.mData );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcol._setter( d, contents );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\td[i] = contents;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t};\n\t\n\t\tif ( td ) {\n\t\t\t// `tr` element was passed in\n\t\t\twhile ( td ) {\n\t\t\t\tname = td.nodeName.toUpperCase();\n\t\n\t\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\t\tcellProcess( td );\n\t\t\t\t\ttds.push( td );\n\t\t\t\t}\n\t\n\t\t\t\ttd = td.nextSibling;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Existing row object passed in\n\t\t\ttds = row.anCells;\n\t\n\t\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\t\tcellProcess( tds[j] );\n\t\t\t}\n\t\t}\n\t\n\t\t// Read the ID from the DOM if present\n\t\tvar rowNode = row.firstChild ? row : row.nTr;\n\t\n\t\tif ( rowNode ) {\n\t\t\tvar id = rowNode.getAttribute( 'id' );\n\t\n\t\t\tif ( id ) {\n\t\t\t\t_fnSetObjectDataFn( settings.rowId )( d, id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn {\n\t\t\tdata: d,\n\t\t\tcells: tds\n\t\t};\n\t}\n\t/**\n\t * Create a new TR element (and it's TD children) for a row\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iRow Row to consider\n\t * @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n\t * DataTables will create a row automatically\n\t * @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t * if nTr is.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n\t{\n\t\tvar\n\t\t\trow = oSettings.aoData[iRow],\n\t\t\trowData = row._aData,\n\t\t\tcells = [],\n\t\t\tnTr, nTd, oCol,\n\t\t\ti, iLen, create;\n\t\n\t\tif ( row.nTr === null )\n\t\t{\n\t\t\tnTr = nTrIn || document.createElement('tr');\n\t\n\t\t\trow.nTr = nTr;\n\t\t\trow.anCells = cells;\n\t\n\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t * to the aoData array for fast look up\n\t\t\t */\n\t\t\tnTr._DT_RowIndex = iRow;\n\t\n\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t_fnRowAttributes( oSettings, row );\n\t\n\t\t\t/* Process each column */\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\t\t\tcreate = nTrIn ? false : true;\n\t\n\t\t\t\tnTd = create ? document.createElement( oCol.sCellType ) : anTds[i];\n\t\t\t\tnTd._DT_CellIndex = {\n\t\t\t\t\trow: iRow,\n\t\t\t\t\tcolumn: i\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tcells.push( nTd );\n\t\n\t\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\t\tif ( create || ((oCol.mRender || oCol.mData !== i) &&\n\t\t\t\t\t (!$.isPlainObject(oCol.mData) || oCol.mData._ !== i+'.display')\n\t\t\t\t)) {\n\t\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t}\n\t\n\t\t\t\t/* Add user defined class */\n\t\t\t\tif ( oCol.sClass )\n\t\t\t\t{\n\t\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\n\t\t\t\t// Visibility - add or remove as required\n\t\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t}\n\t\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow, cells] );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Add attributes to a row based on the special `DT_*` parameters in a data\n\t * source object.\n\t * @param {object} settings DataTables settings object\n\t * @param {object} DataTables row object for the row to be modified\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnRowAttributes( settings, row )\n\t{\n\t\tvar tr = row.nTr;\n\t\tvar data = row._aData;\n\t\n\t\tif ( tr ) {\n\t\t\tvar id = settings.rowIdFn( data );\n\t\n\t\t\tif ( id ) {\n\t\t\t\ttr.id = id;\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowClass ) {\n\t\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\t\ta;\n\t\n\t\t\t\t$(tr)\n\t\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t\t.addClass( data.DT_RowClass );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowAttr ) {\n\t\t\t\t$(tr).attr( data.DT_RowAttr );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowData ) {\n\t\t\t\t$(tr).data( data.DT_RowData );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Create the HTML header for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBuildHead( oSettings )\n\t{\n\t\tvar i, ien, cell, row, column;\n\t\tvar thead = oSettings.nTHead;\n\t\tvar tfoot = oSettings.nTFoot;\n\t\tvar createHeader = $('th, td', thead).length === 0;\n\t\tvar classes = oSettings.oClasses;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\tif ( createHeader ) {\n\t\t\trow = $('<tr/>').appendTo( thead );\n\t\t}\n\t\n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcell = $( column.nTh ).addClass( column.sClass );\n\t\n\t\t\tif ( createHeader ) {\n\t\t\t\tcell.appendTo( row );\n\t\t\t}\n\t\n\t\t\t// 1.11 move into sorting\n\t\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\t\tcell.addClass( column.sSortingClass );\n\t\n\t\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\t\tcell\n\t\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\t\n\t\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( column.sTitle != cell[0].innerHTML ) {\n\t\t\t\tcell.html( column.sTitle );\n\t\t\t}\n\t\n\t\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\t\toSettings, cell, column, classes\n\t\t\t);\n\t\t}\n\t\n\t\tif ( createHeader ) {\n\t\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t\t}\n\t\n\t\t/* Deal with the footer - add classes if required */\n\t\t$(thead).children('tr').children('th, td').addClass( classes.sHeaderTH );\n\t\t$(tfoot).children('tr').children('th, td').addClass( classes.sFooterTH );\n\t\n\t\t// Cache the footer cells. Note that we only take the cells from the first\n\t\t// row in the footer. If there is more than one row the user wants to\n\t\t// interact with, they need to use the table().foot() method. Note also this\n\t\t// allows cells to be used for multiple columns using colspan\n\t\tif ( tfoot !== null ) {\n\t\t\tvar cells = oSettings.aoFooter[0];\n\t\n\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\tcolumn = columns[i];\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the header (or footer) element based on the column visibility states. The\n\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t * traversed over cell at a time in a rows x columns grid fashion, although each\n\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t * already a cell in that position.\n\t * @param {object} oSettings dataTables settings object\n\t * @param array {objects} aoSource Layout array from _fnDetectHeader\n\t * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\tvar aoLocal = [];\n\t\tvar aApplied = [];\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar iRowspan, iColspan;\n\t\n\t\tif ( ! aoSource )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( bIncludeHidden === undefined )\n\t\t{\n\t\t\tbIncludeHidden = false;\n\t\t}\n\t\n\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\n\t\t\t/* Remove any columns which are currently hidden */\n\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t{\n\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\taApplied.push( [] );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\n\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\tif ( nLocalTr )\n\t\t\t{\n\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tiRowspan = 1;\n\t\t\t\tiColspan = 1;\n\t\n\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t */\n\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\taApplied[i][j] = 1;\n\t\n\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Insert the required TR nodes into the table for display\n\t * @param {object} oSettings dataTables settings object\n\t * @param ajaxComplete true after ajax call to complete rendering\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDraw( oSettings, ajaxComplete )\n\t{\n\t\t// Allow for state saving and a custom start position\n\t\t_fnStart( oSettings );\n\t\n\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar anRows = [];\n\t\tvar iRowCount = 0;\n\t\tvar asStripeClasses = oSettings.asStripeClasses;\n\t\tvar iStripes = asStripeClasses.length;\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\tvar iDisplayStart = oSettings._iDisplayStart;\n\t\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\t\n\t\toSettings.bDrawing = true;\n\t\n\t\t/* Server-side processing draw intercept */\n\t\tif ( oSettings.bDeferLoading )\n\t\t{\n\t\t\toSettings.bDeferLoading = false;\n\t\t\toSettings.iDraw++;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\telse if ( !bServerSide )\n\t\t{\n\t\t\toSettings.iDraw++;\n\t\t}\n\t\telse if ( !oSettings.bDestroying && !ajaxComplete)\n\t\t{\n\t\t\t_fnAjaxUpdate( oSettings );\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( aiDisplay.length !== 0 )\n\t\t{\n\t\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\t\n\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t{\n\t\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t{\n\t\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t\t}\n\t\n\t\t\t\tvar nRow = aoData.nTr;\n\t\n\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t{\n\t\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Row callback functions - might want to manipulate the row\n\t\t\t\t// iRowCount and j are not currently documented. Are they at all\n\t\t\t\t// useful?\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t\t[nRow, aoData._aData, iRowCount, j, iDataIndex] );\n\t\n\t\t\t\tanRows.push( nRow );\n\t\t\t\tiRowCount++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\tif ( oSettings.iDraw == 1 && _fnDataSource( oSettings ) == 'ajax' )\n\t\t\t{\n\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t}\n\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t{\n\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t}\n\t\n\t\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t\t.append( $('<td />', {\n\t\t\t\t\t'valign': 'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class': oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t * @param {object} oSettings dataTables settings object\n\t * @param {boolean} [holdPosition] Keep the current paging position. By default\n\t * the paging is reset to the first page\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort = features.bSort,\n\t\t\tfilter = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('<div/>', {\n\t\t\tid: oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t{\n\t\t\tfeatureNode = null;\n\t\t\tcOption = aDom[i];\n\t\n\t\t\tif ( cOption == '<' )\n\t\t\t{\n\t\t\t\t/* New container div */\n\t\t\t\tnNewNode = $('<div/>')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t{\n\t\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Add to the 2D features array */\n\t\t\tif ( featureNode )\n\t\t\t{\n\t\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\t\n\t\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t\t{\n\t\t\t\t\taanFeatures[cOption] = [];\n\t\t\t\t}\n\t\n\t\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\t\tinsert.append( featureNode );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\tholding.replaceWith( insert );\n\t\toSettings.nHolding = null;\n\t}\n\t\n\t\n\t/**\n\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t * create a layout grid (array) of rows x columns, which contains a reference\n\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t * any column / row could be removed and the new grid constructed\n\t * @param array {object} aLayout Array to store the calculated layout in\n\t * @param {node} nThead The header/footer element for the table\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDetectHeader ( aLayout, nThead )\n\t{\n\t\tvar nTrs = $(nThead).children('tr');\n\t\tvar nTr, nCell;\n\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\tvar bUnique;\n\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\tvar k = a[i];\n\t while ( k[j] ) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\treturn j;\n\t\t};\n\t\n\t\taLayout.splice( 0, aLayout.length );\n\t\n\t\t/* We know how many rows there are in the layout - so prep it */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taLayout.push( [] );\n\t\t}\n\t\n\t\t/* Calculate a layout array */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTr = nTrs[i];\n\t\t\tiColumn = 0;\n\t\n\t\t\t/* For every cell in the row... */\n\t\t\tnCell = nTr.firstChild;\n\t\t\twhile ( nCell ) {\n\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t{\n\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\n\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t\t * accordingly\n\t\t\t\t\t */\n\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\n\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\n\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get an array of unique th elements, one for each column\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} nHeader automatically detect the layout from this node - optional\n\t * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t * @returns array {node} aReturn list of unique th's\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t{\n\t\tvar aReturn = [];\n\t\tif ( !aLayout )\n\t\t{\n\t\t\taLayout = oSettings.aoHeader;\n\t\t\tif ( nHeader )\n\t\t\t{\n\t\t\t\taLayout = [];\n\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t}\n\t\t}\n\t\n\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t{\n\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn aReturn;\n\t}\n\t\n\t/**\n\t * Set the start position for draw\n\t * @param {object} oSettings dataTables settings object\n\t */\n\tfunction _fnStart( oSettings )\n\t{\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\t\n\t\t// Check and see if we have an initial draw position from state saving\n\t\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\t\tiInitDisplayStart :\n\t\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t\t0 :\n\t\t\t\t\tiInitDisplayStart;\n\t\n\t\t\toSettings.iInitDisplayStart = -1;\n\t\t}\n\t}\n\t\n\t/**\n\t * Create an Ajax call based on the table's settings, taking into account that\n\t * parameters can have multiple forms, and backwards compatibility.\n\t *\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} data Data to send to the server, required by\n\t * DataTables - may be augmented by developer callbacks\n\t * @param {function} fn Callback function to run when data is obtained\n\t */\n\tfunction _fnBuildAjax( oSettings, data, fn )\n\t{\n\t\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\t\n\t\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t\t// come from server-side processing or serverParams\n\t\tif ( data && Array.isArray(data) ) {\n\t\t\tvar tmp = {};\n\t\t\tvar rbracket = /(.*?)\\[\\]$/;\n\t\n\t\t\t$.each( data, function (key, val) {\n\t\t\t\tvar match = val.name.match(rbracket);\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Support for arrays\n\t\t\t\t\tvar name = match[0];\n\t\n\t\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t\t}\n\t\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttmp[val.name] = val.value;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdata = tmp;\n\t\t}\n\t\n\t\tvar ajaxData;\n\t\tvar ajax = oSettings.ajax;\n\t\tvar instance = oSettings.oInstance;\n\t\tvar callback = function ( json ) {\n\t\t\tvar status = oSettings.jqXHR\n\t\t\t\t? oSettings.jqXHR.status\n\t\t\t\t: null;\n\t\n\t\t\tif ( json === null || (typeof status === 'number' && status == 204 ) ) {\n\t\t\t\tjson = {};\n\t\t\t\t_fnAjaxDataSrc( oSettings, json, [] );\n\t\t\t}\n\t\n\t\t\tvar error = json.error || json.sError;\n\t\t\tif ( error ) {\n\t\t\t\t_fnLog( oSettings, 0, error );\n\t\t\t}\n\t\n\t\t\toSettings.json = json;\n\t\n\t\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );\n\t\t\tfn( json );\n\t\t};\n\t\n\t\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t\t{\n\t\t\tajaxData = ajax.data;\n\t\n\t\t\tvar newData = typeof ajaxData === 'function' ?\n\t\t\t\tajaxData( data, oSettings ) : // fn can manipulate data or return\n\t\t\t\tajaxData; // an object object or array to merge\n\t\n\t\t\t// If the function returned something, use that alone\n\t\t\tdata = typeof ajaxData === 'function' && newData ?\n\t\t\t\tnewData :\n\t\t\t\t$.extend( true, data, newData );\n\t\n\t\t\t// Remove the data property as we've resolved it already and don't want\n\t\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\t\tdelete ajax.data;\n\t\t}\n\t\n\t\tvar baseAjax = {\n\t\t\t\"data\": data,\n\t\t\t\"success\": callback,\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tvar ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );\n\t\n\t\t\t\tif ( $.inArray( true, ret ) === -1 ) {\n\t\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t_fnLog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t}\n\t\t};\n\t\n\t\t// Store the data submitted for the API\n\t\toSettings.oAjaxData = data;\n\t\n\t\t// Allow plug-ins and external processes to modify the data\n\t\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\t\n\t\tif ( oSettings.fnServerData )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.fnServerData.call( instance,\n\t\t\t\toSettings.sAjaxSource,\n\t\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\t\treturn { name: key, value: val };\n\t\t\t\t} ),\n\t\t\t\tcallback,\n\t\t\t\toSettings\n\t\t\t);\n\t\t}\n\t\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t\t} ) );\n\t\t}\n\t\telse if ( typeof ajax === 'function' )\n\t\t{\n\t\t\t// Is a function - let the caller define what needs to be done\n\t\t\toSettings.jqXHR = ajax.call( instance, data, callback, oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Object to extend the base settings\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\t\n\t\t\t// Restore for next time around\n\t\t\tajax.data = ajaxData;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Update the table using an Ajax call\n\t * @param {object} settings dataTables settings object\n\t * @returns {boolean} Block the table drawing or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdate( settings )\n\t{\n\t\tsettings.iDraw++;\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t_fnBuildAjax(\n\t\t\tsettings,\n\t\t\t_fnAjaxParameters( settings ),\n\t\t\tfunction(json) {\n\t\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t/**\n\t * Build up the parameters in an object needed for a server-side processing\n\t * request. Note that this is basically done twice, is different ways - a modern\n\t * method which is used by default in DataTables 1.10 which uses objects and\n\t * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n\t * the sAjaxSource option is used in the initialisation, or the legacyAjax\n\t * option is set.\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {bool} block the table drawing or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxParameters( settings )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tcolumnCount = columns.length,\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tpreSearch = settings.oPreviousSearch,\n\t\t\tpreColSearch = settings.aoPreSearchCols,\n\t\t\ti, data = [], dataProp, column, columnSearch,\n\t\t\tsort = _fnSortFlatten( settings ),\n\t\t\tdisplayStart = settings._iDisplayStart,\n\t\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\t\tsettings._iDisplayLength :\n\t\t\t\t-1;\n\t\n\t\tvar param = function ( name, value ) {\n\t\t\tdata.push( { 'name': name, 'value': value } );\n\t\t};\n\t\n\t\t// DataTables 1.9- compatible method\n\t\tparam( 'sEcho', settings.iDraw );\n\t\tparam( 'iColumns', columnCount );\n\t\tparam( 'sColumns', _pluck( columns, 'sName' ).join(',') );\n\t\tparam( 'iDisplayStart', displayStart );\n\t\tparam( 'iDisplayLength', displayLength );\n\t\n\t\t// DataTables 1.10+ method\n\t\tvar d = {\n\t\t\tdraw: settings.iDraw,\n\t\t\tcolumns: [],\n\t\t\torder: [],\n\t\t\tstart: displayStart,\n\t\t\tlength: displayLength,\n\t\t\tsearch: {\n\t\t\t\tvalue: preSearch.sSearch,\n\t\t\t\tregex: preSearch.bRegex\n\t\t\t}\n\t\t};\n\t\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcolumnSearch = preColSearch[i];\n\t\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\t\n\t\t\td.columns.push( {\n\t\t\t\tdata: dataProp,\n\t\t\t\tname: column.sName,\n\t\t\t\tsearchable: column.bSearchable,\n\t\t\t\torderable: column.bSortable,\n\t\t\t\tsearch: {\n\t\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\t\tregex: columnSearch.bRegex\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tparam( \"mDataProp_\"+i, dataProp );\n\t\n\t\t\tif ( features.bFilter ) {\n\t\t\t\tparam( 'sSearch_'+i, columnSearch.sSearch );\n\t\t\t\tparam( 'bRegex_'+i, columnSearch.bRegex );\n\t\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t\t}\n\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch', preSearch.sSearch );\n\t\t\tparam( 'bRegex', preSearch.bRegex );\n\t\t}\n\t\n\t\tif ( features.bSort ) {\n\t\t\t$.each( sort, function ( i, val ) {\n\t\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\t\n\t\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t\t} );\n\t\n\t\t\tparam( 'iSortingCols', sort.length );\n\t\t}\n\t\n\t\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t\t// form to use, based on sAjaxSource\n\t\tvar legacy = DataTable.ext.legacy.ajax;\n\t\tif ( legacy === null ) {\n\t\t\treturn settings.sAjaxSource ? data : d;\n\t\t}\n\t\n\t\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t\t// form\n\t\treturn legacy ? data : d;\n\t}\n\t\n\t\n\t/**\n\t * Data the data from the server (nuking the old) and redraw the table\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} json json data return from the server.\n\t * @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t * @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t * @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t * @param {array} json.aaData The data to display on this page\n\t * @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdateDraw ( settings, json )\n\t{\n\t\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t\t// Support both\n\t\tvar compat = function ( old, modern ) {\n\t\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t\t};\n\t\n\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\tvar draw = compat( 'sEcho', 'draw' );\n\t\tvar recordsTotal = compat( 'iTotalRecords', 'recordsTotal' );\n\t\tvar recordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\t\n\t\tif ( draw !== undefined ) {\n\t\t\t// Protect against out of sequence returns\n\t\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings.iDraw = draw * 1;\n\t\t}\n\t\n\t\t// No data in returned object, so rather than an array, we show an empty table\n\t\tif ( ! data ) {\n\t\t\tdata = [];\n\t\t}\n\t\n\t\t_fnClearTable( settings );\n\t\tsettings._iRecordsTotal = parseInt(recordsTotal, 10);\n\t\tsettings._iRecordsDisplay = parseInt(recordsFiltered, 10);\n\t\n\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t_fnAddData( settings, data[i] );\n\t\t}\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\n\t\t_fnDraw( settings, true );\n\t\n\t\tif ( ! settings._bInitComplete ) {\n\t\t\t_fnInitComplete( settings, json );\n\t\t}\n\t\n\t\t_fnProcessingDisplay( settings, false );\n\t}\n\t\n\t\n\t/**\n\t * Get the data from the JSON data source to use for drawing a table. Using\n\t * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n\t * source object, or from a processing function.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} json Data source object / array from the server\n\t * @return {array} Array of data to use\n\t */\n\t function _fnAjaxDataSrc ( oSettings, json, write )\n\t {\n\t\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\t\toSettings.ajax.dataSrc :\n\t\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\t\n\t\tif ( ! write ) {\n\t\t\tif ( dataSrc === 'data' ) {\n\t\t\t\t// If the default, then we still want to support the old style, and safely ignore\n\t\t\t\t// it if possible\n\t\t\t\treturn json.aaData || json[dataSrc];\n\t\t\t}\n\t\n\t\t\treturn dataSrc !== \"\" ?\n\t\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\t\tjson;\n\t\t}\n\t\n\t\t// set\n\t\t_fnSetObjectDataFn( dataSrc )( json, write );\n\t}\n\t\n\t/**\n\t * Generate the node required for filtering text\n\t * @returns {node} Filter control element\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlFilter ( settings )\n\t{\n\t\tvar classes = settings.oClasses;\n\t\tvar tableId = settings.sTableId;\n\t\tvar language = settings.oLanguage;\n\t\tvar previousSearch = settings.oPreviousSearch;\n\t\tvar features = settings.aanFeatures;\n\t\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('<div/>', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('<label/>' ).append( str ) );\n\t\n\t\tvar searchFn = function(event) {\n\t\t\t/* Update all other filter input elements for the new display */\n\t\t\tvar n = features.f;\n\t\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\t\tif(previousSearch.return && event.key !== \"Enter\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t/* Now do the filter */\n\t\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\t\"sSearch\": val,\n\t\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive,\n\t\t\t\t\t\"return\": previousSearch.return\n\t\t\t\t} );\n\t\n\t\t\t\t// Need to redraw, without resorting\n\t\t\t\tsettings._iDisplayStart = 0;\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t};\n\t\n\t\tvar searchDelay = settings.searchDelay !== null ?\n\t\t\tsettings.searchDelay :\n\t\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t\t400 :\n\t\t\t\t0;\n\t\n\t\tvar jqFilter = $('input', filter)\n\t\t\t.val( previousSearch.sSearch )\n\t\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t\t.on(\n\t\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\t\tsearchDelay ?\n\t\t\t\t\t_fnThrottle( searchFn, searchDelay ) :\n\t\t\t\t\tsearchFn\n\t\t\t)\n\t\t\t.on( 'mouseup', function(e) {\n\t\t\t\t// Edge fix! Edge 17 does not trigger anything other than mouse events when clicking\n\t\t\t\t// on the clear icon (Edge bug 17584515). This is safe in other browsers as `searchFn`\n\t\t\t\t// checks the value to see if it has changed. In other browsers it won't have.\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\tsearchFn.call(jqFilter[0], e);\n\t\t\t\t}, 10);\n\t\t\t} )\n\t\t\t.on( 'keypress.DT', function(e) {\n\t\t\t\t/* Prevent form submission */\n\t\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attr('aria-controls', tableId);\n\t\n\t\t// Update the input elements whenever the table is filtered\n\t\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {}\n\t\t\t}\n\t\t} );\n\t\n\t\treturn filter[0];\n\t}\n\t\n\t\n\t/**\n\t * Filter the table using both the global filter and column based filtering\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} oSearch search information\n\t * @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t{\n\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t/* Save the filtering values */\n\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t\toPrevSearch.return = oFilter.return;\n\t\t};\n\t\tvar fnRegex = function ( o ) {\n\t\t\t// Backwards compatibility with the bEscapeRegex option\n\t\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t\t};\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo As per sort - can this be moved into an event handler?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t\t{\n\t\t\t/* Global filter */\n\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive, oInput.return );\n\t\t\tfnSaveFilter( oInput );\n\t\n\t\t\t/* Now do the individual column filter */\n\t\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t}\n\t\n\t\t\t/* Custom filtering */\n\t\t\t_fnFilterCustom( oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfnSaveFilter( oInput );\n\t\t}\n\t\n\t\t/* Tell the draw function we have been filtering */\n\t\toSettings.bFiltered = true;\n\t\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n\t}\n\t\n\t\n\t/**\n\t * Apply custom filtering functions\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCustom( settings )\n\t{\n\t\tvar filters = DataTable.ext.search;\n\t\tvar displayRows = settings.aiDisplay;\n\t\tvar row, rowIdx;\n\t\n\t\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\t\tvar rows = [];\n\t\n\t\t\t// Loop over each row and see if it should be included\n\t\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\t\trowIdx = displayRows[ j ];\n\t\t\t\trow = settings.aoData[ rowIdx ];\n\t\n\t\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\t\trows.push( rowIdx );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// So the array reference doesn't break set the results into the\n\t\t\t// existing array\n\t\t\tdisplayRows.length = 0;\n\t\t\t$.merge( displayRows, rows );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the table on a per-column basis\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sInput string to filter on\n\t * @param {int} iColumn column to filter\n\t * @param {bool} bRegex treat search string as a regular expression or not\n\t * @param {bool} bSmart use smart filtering or not\n\t * @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n\t{\n\t\tif ( searchStr === '' ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar data;\n\t\tvar out = [];\n\t\tvar display = settings.aiDisplay;\n\t\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\t\n\t\tfor ( var i=0 ; i<display.length ; i++ ) {\n\t\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\t\n\t\t\tif ( rpSearch.test( data ) ) {\n\t\t\t\tout.push( display[i] );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aiDisplay = out;\n\t}\n\t\n\t\n\t/**\n\t * Filter the data table based on user input and draw the table\n\t * @param {object} settings dataTables settings object\n\t * @param {string} input string to filter on\n\t * @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n\t * @param {bool} regex treat as a regular expression or not\n\t * @param {bool} smart perform smart filtering or not\n\t * @param {bool} caseInsensitive Do case insensitive matching or not\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n\t{\n\t\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\t\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\t\tvar displayMaster = settings.aiDisplayMaster;\n\t\tvar display, invalidated, i;\n\t\tvar filtered = [];\n\t\n\t\t// Need to take account of custom filtering functions - always filter\n\t\tif ( DataTable.ext.search.length !== 0 ) {\n\t\t\tforce = true;\n\t\t}\n\t\n\t\t// Check if any of the rows were invalidated\n\t\tinvalidated = _fnFilterData( settings );\n\t\n\t\t// If the input is blank - we just want the full data set\n\t\tif ( input.length <= 0 ) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\t\telse {\n\t\t\t// New search - start from the master array\n\t\t\tif ( invalidated ||\n\t\t\t\t force ||\n\t\t\t\t regex ||\n\t\t\t\t prevSearch.length > input.length ||\n\t\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t\t // re-filtered since indexes will have changed\n\t\t\t) {\n\t\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t\t}\n\t\n\t\t\t// Search the display array\n\t\t\tdisplay = settings.aiDisplay;\n\t\n\t\t\tfor ( i=0 ; i<display.length ; i++ ) {\n\t\t\t\tif ( rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\t\tfiltered.push( display[i] );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tsettings.aiDisplay = filtered;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a regular expression object suitable for searching a table\n\t * @param {string} sSearch string to search for\n\t * @param {bool} bRegex treat as a regular expression or not\n\t * @param {bool} bSmart perform smart filtering or not\n\t * @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t * @returns {RegExp} constructed object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n\t{\n\t\tsearch = regex ?\n\t\t\tsearch :\n\t\t\t_fnEscapeRegex( search );\n\t\t\n\t\tif ( smart ) {\n\t\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t\t * order is important - a la google. So this is what we want to\n\t\t\t * generate:\n\t\t\t * \n\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t\t */\n\t\t\tvar a = $.map( search.match( /\"[^\"]+\"|[^ ]+/g ) || [''], function ( word ) {\n\t\t\t\tif ( word.charAt(0) === '\"' ) {\n\t\t\t\t\tvar m = word.match( /^\"(.*)\"$/ );\n\t\t\t\t\tword = m ? m[1] : word;\n\t\t\t\t}\n\t\n\t\t\t\treturn word.replace('\"', '');\n\t\t\t} );\n\t\n\t\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t\t}\n\t\n\t\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n\t}\n\t\n\t\n\t/**\n\t * Escape a string such that it can be used in a regular expression\n\t * @param {string} sVal string to escape\n\t * @returns {string} escaped string\n\t * @memberof DataTable#oApi\n\t */\n\tvar _fnEscapeRegex = DataTable.util.escapeRegex;\n\t\n\tvar __filter_div = $('<div>')[0];\n\tvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\t\n\t// Update the filtering data for each row if needed (by invalidation or first run)\n\tfunction _fnFilterData ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar column;\n\t\tvar i, j, ien, jen, filterData, cellData, row;\n\t\tvar wasInvalidated = false;\n\t\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aFilterData ) {\n\t\t\t\tfilterData = [];\n\t\n\t\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\t\tcolumn = columns[j];\n\t\n\t\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\t\n\t\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\t\tcellData = cellData.toString();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\t\tcellData = cellData.replace(/[\\r\\n\\u2028]/g, '');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfilterData.push( cellData );\n\t\t\t\t}\n\t\n\t\t\t\trow._aFilterData = filterData;\n\t\t\t\trow._sFilterRow = filterData.join(' ');\n\t\t\t\twasInvalidated = true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn wasInvalidated;\n\t}\n\t\n\t\n\t/**\n\t * Convert from the internal Hungarian notation to camelCase for external\n\t * interaction\n\t * @param {object} obj Object to convert\n\t * @returns {object} Inverted object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToCamel ( obj )\n\t{\n\t\treturn {\n\t\t\tsearch: obj.sSearch,\n\t\t\tsmart: obj.bSmart,\n\t\t\tregex: obj.bRegex,\n\t\t\tcaseInsensitive: obj.bCaseInsensitive\n\t\t};\n\t}\n\t\n\t\n\t\n\t/**\n\t * Convert from camelCase notation to the internal Hungarian. We could use the\n\t * Hungarian convert function here, but this is cleaner\n\t * @param {object} obj Object to convert\n\t * @returns {object} Inverted object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToHung ( obj )\n\t{\n\t\treturn {\n\t\t\tsSearch: obj.search,\n\t\t\tbSmart: obj.smart,\n\t\t\tbRegex: obj.regex,\n\t\t\tbCaseInsensitive: obj.caseInsensitive\n\t\t};\n\t}\n\t\n\t/**\n\t * Generate the node required for the info display\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {node} Information element\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlInfo ( settings )\n\t{\n\t\tvar\n\t\t\ttid = settings.sTableId,\n\t\t\tnodes = settings.aanFeatures.i,\n\t\t\tn = $('<div/>', {\n\t\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t\t} );\n\t\n\t\tif ( ! nodes ) {\n\t\t\t// Update display on each draw\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\"sName\": \"information\"\n\t\t\t} );\n\t\n\t\t\tn\n\t\t\t\t.attr( 'role', 'status' )\n\t\t\t\t.attr( 'aria-live', 'polite' );\n\t\n\t\t\t// Table is described by our info div\n\t\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t\t}\n\t\n\t\treturn n[0];\n\t}\n\t\n\t\n\t/**\n\t * Update the information elements in the display\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnUpdateInfo ( settings )\n\t{\n\t\t/* Show information about the table */\n\t\tvar nodes = settings.aanFeatures.i;\n\t\tif ( nodes.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\tlang = settings.oLanguage,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tmax = settings.fnRecordsTotal(),\n\t\t\ttotal = settings.fnRecordsDisplay(),\n\t\t\tout = total ?\n\t\t\t\tlang.sInfo :\n\t\t\t\tlang.sInfoEmpty;\n\t\n\t\tif ( total !== max ) {\n\t\t\t/* Record set after filtering */\n\t\t\tout += ' ' + lang.sInfoFiltered;\n\t\t}\n\t\n\t\t// Convert the macros\n\t\tout += lang.sInfoPostFix;\n\t\tout = _fnInfoMacros( settings, out );\n\t\n\t\tvar callback = lang.fnInfoCallback;\n\t\tif ( callback !== null ) {\n\t\t\tout = callback.call( settings.oInstance,\n\t\t\t\tsettings, start, end, max, total, out\n\t\t\t);\n\t\t}\n\t\n\t\t$(nodes).html( out );\n\t}\n\t\n\t\n\tfunction _fnInfoMacros ( settings, str )\n\t{\n\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t// internally\n\t\tvar\n\t\t\tformatter = settings.fnFormatNumber,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tlen = settings._iDisplayLength,\n\t\t\tvis = settings.fnRecordsDisplay(),\n\t\t\tall = len === -1;\n\t\n\t\treturn str.\n\t\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\t\treplace(/_END_/g, formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\t\treplace(/_MAX_/g, formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\t\treplace(/_PAGE_/g, formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n\t}\n\t\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnInitialise ( settings )\n\t{\n\t\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\t\tvar columns = settings.aoColumns, column;\n\t\tvar features = settings.oFeatures;\n\t\tvar deferLoading = settings.bDeferLoading; // value modified by the draw\n\t\n\t\t/* Ensure that the table data is fully initialised */\n\t\tif ( ! settings.bInitialised ) {\n\t\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Show the display HTML options */\n\t\t_fnAddOptionsHtml( settings );\n\t\n\t\t/* Build and draw the header / footer for the table */\n\t\t_fnBuildHead( settings );\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t/* Okay to show that something is going on now */\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t/* Calculate sizes for columns */\n\t\tif ( features.bAutoWidth ) {\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\n\t\t\tif ( column.sWidth ) {\n\t\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'preInit', [settings] );\n\t\n\t\t// If there is default sorting required - let's do it. The sort function\n\t\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t\t// data (show 'loading' message possibly)\n\t\t_fnReDraw( settings );\n\t\n\t\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\t\tvar dataSrc = _fnDataSource( settings );\n\t\tif ( dataSrc != 'ssp' || deferLoading ) {\n\t\t\t// if there is an ajax source load the data\n\t\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\t\n\t\t\t\t\t// Got the data - add it to the table\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t\t// it appear 'fresh'\n\t\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\t\n\t\t\t\t\t_fnReDraw( settings );\n\t\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t\t}, settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t * with client-side processing (optional)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnInitComplete ( settings, json )\n\t{\n\t\tsettings._bInitComplete = true;\n\t\n\t\t// When data was added after the initialisation (data or Ajax) we need to\n\t\t// calculate the column sizing\n\t\tif ( json || settings.oInit.aaData ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'plugin-init', [settings, json] );\n\t\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n\t}\n\t\n\t\n\tfunction _fnLengthChange ( settings, val )\n\t{\n\t\tvar len = parseInt( val, 10 );\n\t\tsettings._iDisplayLength = len;\n\t\n\t\t_fnLengthOverflow( settings );\n\t\n\t\t// Fire length change event\n\t\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for user display length changing\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Display length feature node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlLength ( settings )\n\t{\n\t\tvar\n\t\t\tclasses = settings.oClasses,\n\t\t\ttableId = settings.sTableId,\n\t\t\tmenu = settings.aLengthMenu,\n\t\t\td2 = Array.isArray( menu[0] ),\n\t\t\tlengths = d2 ? menu[0] : menu,\n\t\t\tlanguage = d2 ? menu[1] : menu;\n\t\n\t\tvar select = $('<select/>', {\n\t\t\t'name': tableId+'_length',\n\t\t\t'aria-controls': tableId,\n\t\t\t'class': classes.sLengthSelect\n\t\t} );\n\t\n\t\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\t\tselect[0][ i ] = new Option(\n\t\t\t\ttypeof language[i] === 'number' ?\n\t\t\t\t\tsettings.fnFormatNumber( language[i] ) :\n\t\t\t\t\tlanguage[i],\n\t\t\t\tlengths[i]\n\t\t\t);\n\t\t}\n\t\n\t\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.on( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {node} Pagination feature node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"sName\": \"pagination\"\n\t\t\t} );\n\t\t}\n\t\n\t\treturn node;\n\t}\n\t\n\t\n\t/**\n\t * Alter the display settings to change the page\n\t * @param {object} settings DataTables settings object\n\t * @param {string|int} action Paging action to take: \"first\", \"previous\",\n\t * \"next\" or \"last\" or page number to jump to (integer)\n\t * @param [bool] redraw Automatically draw the update or not\n\t * @returns {bool} true page has changed, false - no change\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnPageChange ( settings, action, redraw )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tlen = settings._iDisplayLength,\n\t\t\trecords = settings.fnRecordsDisplay();\n\t\n\t\tif ( records === 0 || len === -1 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( typeof action === \"number\" )\n\t\t{\n\t\t\tstart = action * len;\n\t\n\t\t\tif ( start > records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Processing element\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('<div/>', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.append('<div><div></div><div></div><div></div><div></div></div>')\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t * @param {object} settings dataTables settings object\n\t * @param {bool} show Show the processing indicator (true) or not (false)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Node to add to the DOM\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '<div/>';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t * div - scroller\n\t\t * div - scroll head\n\t\t * div - scroll head inner\n\t\t * table - scroll head table\n\t\t * thead - thead\n\t\t * div - scroll body\n\t\t * table - table (master table)\n\t\t * thead - thead clone for sizing\n\t\t * tbody - tbody\n\t\t * div - scroll foot\n\t\t * div - scroll foot inner\n\t\t * table - scroll foot table\n\t\t * tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).on( 'scroll.DT', function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\t$(scrollBody).css('max-height', scrollY);\n\t\tif (! scroll.bCollapse) {\n\t\t\t$(scrollBody).css('height', scrollY);\n\t\t}\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t * 1. Re-create the table inside the scrolling div\n\t * 2. Take live measurements from the DOM\n\t * 3. Apply the measurements to align the columns\n\t * 4. Clean up\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll = settings.oScroll,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tscrollY = scroll.sY,\n\t\t\tbarWidth = scroll.iBarWidth,\n\t\t\tdivHeader = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl = settings.nScrollBody,\n\t\t\tdivBody = $(divBodyEl),\n\t\t\tdivBodyStyle = divBodyEl.style,\n\t\t\tdivFooter = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader = $(settings.nTHead),\n\t\t\ttable = $(settings.nTable),\n\t\t\ttableEl = table[0],\n\t\t\ttableStyle = tableEl.style,\n\t\t\tfooter = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser = settings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize,\n\t\t\tdtHeaderCells = _pluck( settings.aoColumns, 'nTh' ),\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[], footerContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t// If the scrollbar visibility has changed from the last draw, we need to\n\t\t// adjust the column sizes as the table width will have changed to account\n\t\t// for the scrollbar\n\t\tvar scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;\n\t\t\n\t\tif ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t\treturn; // adjust column sizing will call this function again\n\t\t}\n\t\telse {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t}\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t\tfooterCopy.find('[id]').removeAttr('id');\n\t\t}\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\theaderCopy.find('[id]').removeAttr('id');\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\telse if ( scrollXInner !== \"\" ) {\n\t\t\t// legacy x scroll inner has been given - use it\n\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\tvar style = window.getComputedStyle ?\n\t\t\t\twindow.getComputedStyle(nSizer).width :\n\t\t\t\t_fnStringToCss( $(nSizer).width() );\n\t\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( style );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = headerWidths[i];\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).css('height', 0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterContent.push( nSizer.innerHTML );\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\">'+headerContent[i]+'</div>';\n\t\t\tnSizer.childNodes[0].style.height = \"0\";\n\t\t\tnSizer.childNodes[0].style.overflow = \"hidden\";\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\">'+footerContent[i]+'</div>';\n\t\t\t\tnSizer.childNodes[0].style.height = \"0\";\n\t\t\t\tnSizer.childNodes[0].style.overflow = \"hidden\";\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( Math.round(table.outerWidth()) < Math.round(sanityWidth) )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t// Correct DOM ordering for colgroup - comes before the thead\n\t\ttable.children('colgroup').insertBefore( table.children('thead') );\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.trigger('scroll');\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t * @param {function} fn Method to apply to the objects\n\t * @param array {nodes} an1 List of elements to look through for display children\n\t * @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'), // from DOM element\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth,\n\t\t\tbrowser = oSettings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize;\n\t\n\t\tvar styleWidth = table.style.width;\n\t\tif ( styleWidth && styleWidth.indexOf('%') !== -1 ) {\n\t\t\ttableWidthAttr = styleWidth;\n\t\t}\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\tif ( column.sWidth !== null ) {\n\t\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\t\n\t\t\t\tuserInputs = true;\n\t\t\t}\n\t\t}\n\t\n\t\t/* If the number of columns in the DOM equals the number that we have to\n\t\t * process in DataTables, then we can use the offsets that are created by\n\t\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t\t * nor scrolling used\n\t\t */\n\t\tif ( ie67 || ! userInputs && ! scrollX && ! scrollY &&\n\t\t columnCount == _fnVisbleColumns( oSettings ) &&\n\t\t columnCount == headerCells.length\n\t\t) {\n\t\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\t\tvar colIdx = _fnVisibleToColumnIndex( oSettings, i );\n\t\n\t\t\t\tif ( colIdx !== null ) {\n\t\t\t\t\tcolumns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise construct a single row, worst case, table with the widest\n\t\t\t// node in the data, assign any user defined widths, then insert it into\n\t\t\t// the DOM and allow the browser to do all the hard work of calculating\n\t\t\t// table widths\n\t\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t\t.removeAttr( 'id' );\n\t\n\t\t\t// Clean up the table body\n\t\t\ttmpTable.find('tbody tr').remove();\n\t\t\tvar tr = $('<tr/>').appendTo( tmpTable.find('tbody') );\n\t\n\t\t\t// Clone the table header and footer - we can't use the header / footer\n\t\t\t// from the cloned table, since if scrolling is active, the table's\n\t\t\t// real header and footer are contained in different table tags\n\t\t\ttmpTable.find('thead, tfoot').remove();\n\t\t\ttmpTable\n\t\t\t\t.append( $(oSettings.nTHead).clone() )\n\t\t\t\t.append( $(oSettings.nTFoot).clone() );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t\t'';\n\t\n\t\t\t\t// For scrollX we need to force the column width otherwise the\n\t\t\t\t// browser will collapse it. If this width is smaller than the\n\t\t\t\t// width the column requires, then it will have no effect\n\t\t\t\tif ( column.sWidthOrig && scrollX ) {\n\t\t\t\t\t$( headerCells[i] ).append( $('<div/>').css( {\n\t\t\t\t\t\twidth: column.sWidthOrig,\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\theight: 1\n\t\t\t\t\t} ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\t\tcolumn = columns[ columnIdx ];\n\t\n\t\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t\t.clone( false )\n\t\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t\t.appendTo( tr );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Tidy the temporary table - remove name attributes so there aren't\n\t\t\t// duplicated in the dom (radio elements for example)\n\t\t\t$('[name]', tmpTable).removeAttr('name');\n\t\n\t\t\t// Table has been built, attach to the document so we can work with it.\n\t\t\t// A holding element is used, positioned at the top of the container\n\t\t\t// with minimal height, so it has no effect on if the container scrolls\n\t\t\t// or not. Otherwise it might trigger scrolling when it actually isn't\n\t\t\t// needed\n\t\t\tvar holder = $('<div/>').css( scrollX || scrollY ?\n\t\t\t\t\t{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t} :\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t\t.append( tmpTable )\n\t\t\t\t.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\t\t\ttmpTable.removeAttr('width');\n\t\n\t\t\t\t// If there is no width attribute or style, then allow the table to\n\t\t\t\t// collapse\n\t\t\t\tif ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {\n\t\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table - we need to\n\t\t\t// know the inner width (so it can be assigned to the other table's\n\t\t\t// cells) and the outer width so we can calculate the full width of the\n\t\t\t// table. This is safe since DataTables requires a unique cell for each\n\t\t\t// column, but if ever a header can span multiple columns, this will\n\t\t\t// need to be modified.\n\t\t\tvar total = 0;\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tvar cell = $(headerCells[i]);\n\t\t\t\tvar border = cell.outerWidth() - cell.width();\n\t\n\t\t\t\t// Use getBounding... where possible (not IE8-) because it can give\n\t\t\t\t// sub-pixel accuracy, which we then want to round up!\n\t\t\t\tvar bounding = browser.bBounding ?\n\t\t\t\t\tMath.ceil( headerCells[i].getBoundingClientRect().width ) :\n\t\t\t\t\tcell.outerWidth();\n\t\n\t\t\t\t// Total is tracked to remove any sub-pixel errors as the outerWidth\n\t\t\t\t// of the table might not equal the total given here (IE!).\n\t\t\t\ttotal += bounding;\n\t\n\t\t\t\t// Width for each column to use\n\t\t\t\tcolumns[ visibleColumns[i] ].sWidth = _fnStringToCss( bounding - border );\n\t\t\t}\n\t\n\t\t\ttable.style.width = _fnStringToCss( total );\n\t\n\t\t\t// Finished with the table - ditch it\n\t\t\tholder.remove();\n\t\t}\n\t\n\t\t// If there is a width attr, we want to attach an event listener which\n\t\t// allows the table sizing to automatically adjust when the window is\n\t\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t\t// CSS is a relative value or absolute - DOM read is always px.\n\t\tif ( tableWidthAttr ) {\n\t\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t\t}\n\t\n\t\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\t\tvar bindResize = function () {\n\t\t\t\t$(window).on('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t\t} ) );\n\t\t\t};\n\t\n\t\t\t// IE6/7 will crash if we bind a resize event handler on page load.\n\t\t\t// To be removed in 1.11 which drops IE6/7 support\n\t\t\tif ( ie67 ) {\n\t\t\t\tsetTimeout( bindResize, 1000 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbindResize();\n\t\t\t}\n\t\n\t\t\toSettings._reszEvt = true;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained for\n\t * the throttled function\n\t * @param {function} fn Function to be called\n\t * @param {int} [freq=200] call frequency in mS\n\t * @returns {function} wrapped function\n\t * @memberof DataTable#oApi\n\t */\n\tvar _fnThrottle = DataTable.util.throttle;\n\t\n\t\n\t/**\n\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t * @param {string} width width to be converted\n\t * @param {node} parent parent to get the with for (required for relative widths) - optional\n\t * @returns {int} width in pixels\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnConvertToWidth ( width, parent )\n\t{\n\t\tif ( ! width ) {\n\t\t\treturn 0;\n\t\t}\n\t\n\t\tvar n = $('<div/>')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {node} widest table node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {string} max string length for each column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\t\ts = s.replace( __re_html_remove, '' );\n\t\t\ts = s.replace( / /g, ' ' );\n\t\n\t\t\tif ( s.length > max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t * @param {string} value to css-ify\n\t * @returns {string} value with css unit\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! Array.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\t$.merge( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( Array.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t\t{\n\t\t\tsrcCol = nestedSort[i][0];\n\t\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\t\n\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tiCol = aDataSort[k];\n\t\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\t\n\t\t\t\tif ( nestedSort[i]._idx === undefined ) {\n\t\t\t\t\tnestedSort[i]._idx = $.inArray( nestedSort[i][1], aoColumns[iCol].asSorting );\n\t\t\t\t}\n\t\n\t\t\t\taSort.push( {\n\t\t\t\t\tsrc: srcCol,\n\t\t\t\t\tcol: iCol,\n\t\t\t\t\tdir: nestedSort[i][1],\n\t\t\t\t\tindex: nestedSort[i]._idx,\n\t\t\t\t\ttype: sType,\n\t\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\treturn aSort;\n\t}\n\t\n\t/**\n\t * Change the order of the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t * @todo This really needs split up!\n\t */\n\tfunction _fnSort ( oSettings )\n\t{\n\t\tvar\n\t\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\t\tsDataType, nTh,\n\t\t\taiOrig = [],\n\t\t\toExtSort = DataTable.ext.type.order,\n\t\t\taoData = oSettings.aoData,\n\t\t\taoColumns = oSettings.aoColumns,\n\t\t\taDataSort, data, iCol, sType, oSort,\n\t\t\tformatters = 0,\n\t\t\tsortCol,\n\t\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\t\taSort;\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t\t// data is going to be used in the table?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\taSort = _fnSortFlatten( oSettings );\n\t\n\t\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\t\tsortCol = aSort[i];\n\t\n\t\t\t// Track if we can use the fast sort algorithm\n\t\t\tif ( sortCol.formatter ) {\n\t\t\t\tformatters++;\n\t\t\t}\n\t\n\t\t\t// Load the data needed for the sort, for each cell\n\t\t\t_fnSortData( oSettings, sortCol.col );\n\t\t}\n\t\n\t\t/* No sorting required if server-side or no sorting array */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t\t{\n\t\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t\t}\n\t\n\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t * fnLocalSorting = function(a,b){\n\t\t\t * var iTest;\n\t\t\t * iTest = oSort['string-asc']('data11', 'data12');\n\t\t\t * if (iTest !== 0)\n\t\t\t * return iTest;\n\t\t\t * iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t * if (iTest !== 0)\n\t\t\t * return iTest;\n\t\t\t * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t * }\n\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t *\n\t\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t\t * methods which do not have a pre-sort formatting function.\n\t\t\t */\n\t\t\tif ( formatters === aSort.length ) {\n\t\t\t\t// All sort types have formatting functions\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar col = columns[i];\n\t\t\tvar asSorting = col.asSorting;\n\t\t\tvar sTitle = col.ariaTitle || col.sTitle.replace( /<.*?>/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {boolean} [append=false] Append the requested sort to the existing\n\t * sort if true (i.e. multi-column sort)\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a, overflow ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 < asSorting.length ?\n\t\t\t\tidx+1 :\n\t\t\t\toverflow ?\n\t\t\t\t\tnull :\n\t\t\t\t\t0;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\t\n\t\t\t\tif ( nextSortIdx === null && sorting.length === 1 ) {\n\t\t\t\t\tnextSortIdx = 0; // can't remove sorting completely\n\t\t\t\t}\n\t\n\t\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = oldSort[i].src;\n\t\n\t\t\t\t// Remove column sorting\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\n\t\t\t// Add new column sorting\n\t\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = sort[i].src;\n\t\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aLastSort = sort;\n\t}\n\t\n\t\n\t// Get the data to sort a column, be it from cache, fresh (populating the\n\t// cache), or from a sort formatter\n\tfunction _fnSortData( settings, idx )\n\t{\n\t\t// Custom sorting function - provided by the sort data type\n\t\tvar column = settings.aoColumns[ idx ];\n\t\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\t\tvar customData;\n\t\n\t\tif ( customSort ) {\n\t\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t\t);\n\t\t}\n\t\n\t\t// Use / populate cache\n\t\tvar row, cellData;\n\t\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aSortData ) {\n\t\t\t\trow._aSortData = [];\n\t\t\t}\n\t\n\t\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\t\tcellData = customSort ?\n\t\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\t\n\t\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\t\tformatter( cellData ) :\n\t\t\t\t\tcellData;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Save the state of a table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSaveState ( settings )\n\t{\n\t\tif (settings._bLoadingState) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Store the interesting variables */\n\t\tvar state = {\n\t\t\ttime: +new Date(),\n\t\t\tstart: settings._iDisplayStart,\n\t\t\tlength: settings._iDisplayLength,\n\t\t\torder: $.extend( true, [], settings.aaSorting ),\n\t\t\tsearch: _fnSearchToCamel( settings.oPreviousSearch ),\n\t\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\t\treturn {\n\t\t\t\t\tvisible: col.bVisible,\n\t\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t\t};\n\t\t\t} )\n\t\t};\n\t\n\t\tsettings.oSavedState = state;\n\t\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\t\n\t\tif ( settings.oFeatures.bStateSave && !settings.bDestroying )\n\t\t{\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t\t}\t\n\t}\n\t\n\t\n\t/**\n\t * Attempt to load a saved table state\n\t * @param {object} oSettings dataTables settings object\n\t * @param {object} oInit DataTables init object so we can override settings\n\t * @param {function} callback Callback to execute when the state has been loaded\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLoadState ( settings, oInit, callback )\n\t{\n\t\tif ( ! settings.oFeatures.bStateSave ) {\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar loaded = function(state) {\n\t\t\t_fnImplementState(settings, state, callback);\n\t\t}\n\t\n\t\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings, loaded );\n\t\n\t\tif ( state !== undefined ) {\n\t\t\t_fnImplementState( settings, state, callback );\n\t\t}\n\t\t// otherwise, wait for the loaded callback to be executed\n\t\n\t\treturn true;\n\t}\n\t\n\tfunction _fnImplementState ( settings, s, callback) {\n\t\tvar i, ien;\n\t\tvar columns = settings.aoColumns;\n\t\tsettings._bLoadingState = true;\n\t\n\t\t// When StateRestore was introduced the state could now be implemented at any time\n\t\t// Not just initialisation. To do this an api instance is required in some places\n\t\tvar api = settings._bInitComplete ? new DataTable.Api(settings) : null;\n\t\n\t\tif ( ! s || ! s.time ) {\n\t\t\tsettings._bLoadingState = false;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t// cancelling of loading by returning false\n\t\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, s] );\n\t\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\t\tsettings._bLoadingState = false;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Reject old data\n\t\tvar duration = settings.iStateDuration;\n\t\tif ( duration > 0 && s.time < +new Date() - (duration*1000) ) {\n\t\t\tsettings._bLoadingState = false;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\tif ( s.columns && columns.length !== s.columns.length ) {\n\t\t\tsettings._bLoadingState = false;\n\t\t\tcallback();\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Store the saved state so it might be accessed at any time\n\t\tsettings.oLoadedState = $.extend( true, {}, s );\n\t\n\t\t// Page Length\n\t\tif ( s.length !== undefined ) {\n\t\t\t// If already initialised just set the value directly so that the select element is also updated\n\t\t\tif (api) {\n\t\t\t\tapi.page.len(s.length)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings._iDisplayLength = s.length;\n\t\t\t}\n\t\t}\n\t\n\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t// subscribed events\n\t\tif ( s.start !== undefined ) {\n\t\t\tif(api === null) {\n\t\t\t\tsettings._iDisplayStart = s.start;\n\t\t\t\tsettings.iInitDisplayStart = s.start;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnPageChange(settings, s.start/settings._iDisplayLength);\n\t\t\t}\n\t\t}\n\t\n\t\t// Order\n\t\tif ( s.order !== undefined ) {\n\t\t\tsettings.aaSorting = [];\n\t\t\t$.each( s.order, function ( i, col ) {\n\t\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t\t[ 0, col[1] ] :\n\t\t\t\t\tcol\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t\n\t\t// Search\n\t\tif ( s.search !== undefined ) {\n\t\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );\n\t\t}\n\t\n\t\t// Columns\n\t\tif ( s.columns ) {\n\t\t\tfor ( i=0, ien=s.columns.length ; i<ien ; i++ ) {\n\t\t\t\tvar col = s.columns[i];\n\t\n\t\t\t\t// Visibility\n\t\t\t\tif ( col.visible !== undefined ) {\n\t\t\t\t\t// If the api is defined, the table has been initialised so we need to use it rather than internal settings\n\t\t\t\t\tif (api) {\n\t\t\t\t\t\t// Don't redraw the columns on every iteration of this loop, we will do this at the end instead\n\t\t\t\t\t\tapi.column(i).visible(col.visible, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcolumns[i].bVisible = col.visible;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Search\n\t\t\t\tif ( col.search !== undefined ) {\n\t\t\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// If the api is defined then we need to adjust the columns once the visibility has been changed\n\t\t\tif (api) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t}\n\t\n\t\tsettings._bLoadingState = false;\n\t\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, s] );\n\t\tcallback();\n\t};\n\t\n\t\n\t/**\n\t * Return the settings object for a particular table\n\t * @param {node} table table we are using as a dataTable\n\t * @returns {object} Settings object - or null if not found\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSettingsFromNode ( table )\n\t{\n\t\tvar settings = DataTable.settings;\n\t\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\t\n\t\treturn idx !== -1 ?\n\t\t\tsettings[ idx ] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Log an error message\n\t * @param {object} settings dataTables settings object\n\t * @param {int} level log error messages, or display them to the user\n\t * @param {string} msg error message\n\t * @param {int} tn Technical note id to get more information about the error.\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnLog( settings, level, msg, tn )\n\t{\n\t\tmsg = 'DataTables warning: '+\n\t\t\t(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\t\n\t\tif ( tn ) {\n\t\t\tmsg += '. For more information about this error, please see '+\n\t\t\t'http://datatables.net/tn/'+tn;\n\t\t}\n\t\n\t\tif ( ! level ) {\n\t\t\t// Backwards compatibility pre 1.10\n\t\t\tvar ext = DataTable.ext;\n\t\t\tvar type = ext.sErrMode || ext.errMode;\n\t\n\t\t\tif ( settings ) {\n\t\t\t\t_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );\n\t\t\t}\n\t\n\t\t\tif ( type == 'alert' ) {\n\t\t\t\talert( msg );\n\t\t\t}\n\t\t\telse if ( type == 'throw' ) {\n\t\t\t\tthrow new Error(msg);\n\t\t\t}\n\t\t\telse if ( typeof type == 'function' ) {\n\t\t\t\ttype( settings, tn, msg );\n\t\t\t}\n\t\t}\n\t\telse if ( window.console && console.log ) {\n\t\t\tconsole.log( msg );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * See if a property is defined on one object, if so assign it to the other object\n\t * @param {object} ret target object\n\t * @param {object} src source object\n\t * @param {string} name property\n\t * @param {string} [mappedName] name to map too - optional, name used if not given\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnMap( ret, src, name, mappedName )\n\t{\n\t\tif ( Array.isArray( name ) ) {\n\t\t\t$.each( name, function (i, val) {\n\t\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_fnMap( ret, src, val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( mappedName === undefined ) {\n\t\t\tmappedName = name;\n\t\t}\n\t\n\t\tif ( src[name] !== undefined ) {\n\t\t\tret[mappedName] = src[name];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n\t * shallow copy arrays. The reason we need to do this, is that we don't want to\n\t * deep copy array init values (such as aaSorting) since the dev wouldn't be\n\t * able to override them, but we do want to deep copy arrays.\n\t * @param {object} out Object to extend\n\t * @param {object} extender Object from which the properties will be applied to\n\t * out\n\t * @param {boolean} breakRefs If true, then arrays will be sliced to take an\n\t * independent copy with the exception of the `data` or `aaData` parameters\n\t * if they are present. This is so you can pass in a collection to\n\t * DataTables and have that used as your data source without breaking the\n\t * references\n\t * @returns {object} out Reference, just for convenience - out === the return.\n\t * @memberof DataTable#oApi\n\t * @todo This doesn't take account of arrays inside the deep copied objects.\n\t */\n\tfunction _fnExtend( out, extender, breakRefs )\n\t{\n\t\tvar val;\n\t\n\t\tfor ( var prop in extender ) {\n\t\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\t\tval = extender[prop];\n\t\n\t\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\t\tout[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t\t}\n\t\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && Array.isArray(val) ) {\n\t\t\t\t\tout[prop] = val.slice();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout[prop] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t}\n\t\n\t\n\t/**\n\t * Bind an event handers to allow a click or return key to activate the callback.\n\t * This is good for accessibility since a return on the keyboard will have the\n\t * same effect as a click, if the element has focus.\n\t * @param {element} n Element to bind the action to\n\t * @param {object} oData Data object to pass to the triggered function\n\t * @param {function} fn Callback function for when the event is triggered\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnBindAction( n, oData, fn )\n\t{\n\t\t$(n)\n\t\t\t.on( 'click.DT', oData, function (e) {\n\t\t\t\t\t$(n).trigger('blur'); // Remove focus outline for mouse users\n\t\t\t\t\tfn(e);\n\t\t\t\t} )\n\t\t\t.on( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t.on( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Register a callback function. Easily allows a callback function to be added to\n\t * an array store of callback functions that can then all be called together.\n\t * @param {object} oSettings dataTables settings object\n\t * @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t * @param {function} fn Function to be called back\n\t * @param {string} sName Identifying name for the callback (i.e. a label)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t{\n\t\tif ( fn )\n\t\t{\n\t\t\toSettings[sStore].push( {\n\t\t\t\t\"fn\": fn,\n\t\t\t\t\"sName\": sName\n\t\t\t} );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Fire callback functions and trigger events. Note that the loop over the\n\t * callback array store is done backwards! Further note that you do not want to\n\t * fire off triggers in time sensitive applications (for example cell creation)\n\t * as its slow.\n\t * @param {object} settings dataTables settings object\n\t * @param {string} callbackArr Name of the array storage for the callbacks in\n\t * oSettings\n\t * @param {string} eventName Name of the jQuery custom event to trigger. If\n\t * null no trigger is fired\n\t * @param {array} args Array of arguments to pass to the callback function /\n\t * trigger\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackFire( settings, callbackArr, eventName, args )\n\t{\n\t\tvar ret = [];\n\t\n\t\tif ( callbackArr ) {\n\t\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( eventName !== null ) {\n\t\t\tvar e = $.Event( eventName+'.dt' );\n\t\n\t\t\t$(settings.nTable).trigger( e, args );\n\t\n\t\t\tret.push( e.result );\n\t\t}\n\t\n\t\treturn ret;\n\t}\n\t\n\t\n\tfunction _fnLengthOverflow ( settings )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tlen = settings._iDisplayLength;\n\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( start >= end )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\t// Keep the start record on the current page\n\t\tstart -= (start % len);\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @returns {string} Data source\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\t\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t * [\n\t * {\n\t * name: 'data' -- string - Property name\n\t * val: function () {}, -- function - Api method (or undefined if just an object\n\t * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result\n\t * propExt: [ ... ] -- array - Array of Api object definitions to extend the property\n\t * },\n\t * {\n\t * name: 'row'\n\t * val: {},\n\t * methodExt: [ ... ],\n\t * propExt: [\n\t * {\n\t * name: 'data'\n\t * val: function () {},\n\t * methodExt: [ ... ],\n\t * propExt: [ ... ]\n\t * },\n\t * ...\n\t * ]\n\t * }\n\t * ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t * of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t * `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t * // Not chained\n\t * api.row.add( {...} );\n\t * api.draw();\n\t *\n\t * // Chained\n\t * api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t * used to define which DataTables enhanced tables this API will operate on.\n\t * Can be one of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t * // Direct initialisation during DataTables construction\n\t * var api = $('#example').DataTable();\n\t *\n\t * @example\n\t * // Initialisation using a DataTables jQuery object\n\t * var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t * // Initialisation as a constructor\n\t * var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! (this instanceof _Api) ) {\n\t\t\treturn new _Api( context, data );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings.push.apply( settings, a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( Array.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tctxSettings( context[i] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tctxSettings( context );\n\t\t}\n\t\n\t\t// Remove duplicates\n\t\tthis.context = _unique( settings );\n\t\n\t\t// Initial data\n\t\tif ( data ) {\n\t\t\t$.merge( this, data );\n\t\t}\n\t\n\t\t// selector\n\t\tthis.selector = {\n\t\t\trows: null,\n\t\t\tcols: null,\n\t\t\topts: null\n\t\t};\n\t\n\t\t_Api.extend( this, this, __apiStruct );\n\t};\n\t\n\tDataTable.Api = _Api;\n\t\n\t// Don't destroy the existing prototype, just extend it. Required for jQuery 2's\n\t// isPlainObject.\n\t$.extend( _Api.prototype, {\n\t\tany: function ()\n\t\t{\n\t\t\treturn this.count() !== 0;\n\t\t},\n\t\n\t\n\t\tconcat: __arrayProto.concat,\n\t\n\t\n\t\tcontext: [], // array of table settings objects\n\t\n\t\n\t\tcount: function ()\n\t\t{\n\t\t\treturn this.flatten().length;\n\t\t},\n\t\n\t\n\t\teach: function ( fn )\n\t\t{\n\t\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\t\tfn.call( this, this[i], i, this );\n\t\t\t}\n\t\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\teq: function ( idx )\n\t\t{\n\t\t\tvar ctx = this.context;\n\t\n\t\t\treturn ctx.length > idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\t\ta.push( this[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tflatten: function ()\n\t\t{\n\t\t\tvar a = [];\n\t\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t\t},\n\t\n\t\n\t\tjoin: __arrayProto.join,\n\t\n\t\n\t\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t\t{\n\t\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( this[i] === obj ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t\n\t\titerator: function ( flatten, type, fn, alwaysNew ) {\n\t\t\tvar\n\t\t\t\ta = [], ret,\n\t\t\t\ti, ien, j, jen,\n\t\t\t\tcontext = this.context,\n\t\t\t\trows, items, item,\n\t\t\t\tselector = this.selector;\n\t\n\t\t\t// Argument shifting\n\t\t\tif ( typeof flatten === 'string' ) {\n\t\t\t\talwaysNew = fn;\n\t\t\t\tfn = type;\n\t\t\t\ttype = flatten;\n\t\t\t\tflatten = false;\n\t\t\t}\n\t\n\t\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tvar apiInst = new _Api( context[i] );\n\t\n\t\t\t\tif ( type === 'table' ) {\n\t\t\t\t\tret = fn.call( apiInst, context[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\t\tret = fn.call( apiInst, context[i], this[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\t\titems = this[i];\n\t\n\t\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\t\titem = items[j];\n\t\n\t\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item.row, item.column, i, j );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tret = fn.call( apiInst, context[i], item, i, j, rows );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( a.length || alwaysNew ) {\n\t\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\t\tvar apiSelector = api.selector;\n\t\t\t\tapiSelector.rows = selector.rows;\n\t\t\t\tapiSelector.cols = selector.cols;\n\t\t\t\tapiSelector.opts = selector.opts;\n\t\t\t\treturn api;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t\t{\n\t\t\t// Bit cheeky...\n\t\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t\t},\n\t\n\t\n\t\tlength: 0,\n\t\n\t\n\t\tmap: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.map ) {\n\t\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tpluck: function ( prop )\n\t\t{\n\t\t\tlet fn = DataTable.util.get(prop);\n\t\n\t\t\treturn this.map( function ( el ) {\n\t\t\t\treturn fn(el);\n\t\t\t} );\n\t\t},\n\t\n\t\tpop: __arrayProto.pop,\n\t\n\t\n\t\tpush: __arrayProto.push,\n\t\n\t\n\t\t// Does not return an API instance\n\t\treduce: __arrayProto.reduce || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t\t},\n\t\n\t\n\t\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t\t},\n\t\n\t\n\t\treverse: __arrayProto.reverse,\n\t\n\t\n\t\t// Object with rows, columns and opts\n\t\tselector: null,\n\t\n\t\n\t\tshift: __arrayProto.shift,\n\t\n\t\n\t\tslice: function () {\n\t\t\treturn new _Api( this.context, this );\n\t\t},\n\t\n\t\n\t\tsort: __arrayProto.sort, // ? name - order?\n\t\n\t\n\t\tsplice: __arrayProto.splice,\n\t\n\t\n\t\ttoArray: function ()\n\t\t{\n\t\t\treturn __arrayProto.slice.call( this );\n\t\t},\n\t\n\t\n\t\tto$: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\ttoJQuery: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\tunique: function ()\n\t\t{\n\t\t\treturn new _Api( this.context, _unique(this) );\n\t\t},\n\t\n\t\n\t\tunshift: __arrayProto.unshift\n\t} );\n\t\n\t\n\t_Api.extend = function ( scope, obj, ext )\n\t{\n\t\t// Only extend API instances and static properties of the API\n\t\tif ( ! ext.length || ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\tstruct,\n\t\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar ret = fn.apply( scope, arguments );\n\t\n\t\t\t\t\t// Method extension\n\t\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\t\treturn ret;\n\t\t\t\t};\n\t\t\t};\n\t\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tstruct = ext[i];\n\t\n\t\t\t// Value\n\t\t\tobj[ struct.name ] = struct.type === 'function' ?\n\t\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\t\tstruct.type === 'object' ?\n\t\t\t\t\t{} :\n\t\t\t\t\tstruct.val;\n\t\n\t\t\tobj[ struct.name ].__dt_wrapper = true;\n\t\n\t\t\t// Property extension\n\t\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t\t}\n\t};\n\t\n\t\n\t// @todo - Is there need for an augment function?\n\t// _Api.augment = function ( inst, name )\n\t// {\n\t// \t// Find src object in the structure from the name\n\t// \tvar parts = name.split('.');\n\t\n\t// \t_Api.extend( inst, obj );\n\t// };\n\t\n\t\n\t// [\n\t// {\n\t// name: 'data' -- string - Property name\n\t// val: function () {}, -- function - Api method (or undefined if just an object\n\t// methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result\n\t// propExt: [ ... ] -- array - Array of Api object definitions to extend the property\n\t// },\n\t// {\n\t// name: 'row'\n\t// val: {},\n\t// methodExt: [ ... ],\n\t// propExt: [\n\t// {\n\t// name: 'data'\n\t// val: function () {},\n\t// methodExt: [ ... ],\n\t// propExt: [ ... ]\n\t// },\n\t// ...\n\t// ]\n\t// }\n\t// ]\n\t\n\t_Api.register = _api_register = function ( name, val )\n\t{\n\t\tif ( Array.isArray( name ) ) {\n\t\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t\t_Api.register( name[j], val );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\their = name.split('.'),\n\t\t\tstruct = __apiStruct,\n\t\t\tkey, method;\n\t\n\t\tvar find = function ( src, name ) {\n\t\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\t\tif ( src[i].name === name ) {\n\t\t\t\t\treturn src[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\n\t\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\t\tkey = method ?\n\t\t\t\their[i].replace('()', '') :\n\t\t\t\their[i];\n\t\n\t\t\tvar src = find( struct, key );\n\t\t\tif ( ! src ) {\n\t\t\t\tsrc = {\n\t\t\t\t\tname: key,\n\t\t\t\t\tval: {},\n\t\t\t\t\tmethodExt: [],\n\t\t\t\t\tpropExt: [],\n\t\t\t\t\ttype: 'object'\n\t\t\t\t};\n\t\t\t\tstruct.push( src );\n\t\t\t}\n\t\n\t\t\tif ( i === ien-1 ) {\n\t\t\t\tsrc.val = val;\n\t\t\t\tsrc.type = typeof val === 'function' ?\n\t\t\t\t\t'function' :\n\t\t\t\t\t$.isPlainObject( val ) ?\n\t\t\t\t\t\t'object' :\n\t\t\t\t\t\t'other';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstruct = method ?\n\t\t\t\t\tsrc.methodExt :\n\t\t\t\t\tsrc.propExt;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t\t_Api.register( pluralName, val );\n\t\n\t\t_Api.register( singularName, function () {\n\t\t\tvar ret = val.apply( this, arguments );\n\t\n\t\t\tif ( ret === this ) {\n\t\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\telse if ( ret instanceof _Api ) {\n\t\t\t\t// New API instance returned, want the value from the first item\n\t\t\t\t// in the returned array for the singular result.\n\t\t\t\treturn ret.length ?\n\t\t\t\t\tArray.isArray( ret[0] ) ?\n\t\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\t\tret[0] :\n\t\t\t\t\tundefined;\n\t\t\t}\n\t\n\t\t\t// Non-API return - just fire it back\n\t\t\treturn ret;\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Selector for HTML tables. Apply the given selector to the give array of\n\t * DataTables settings objects.\n\t *\n\t * @param {string|integer} [selector] jQuery selector string or integer\n\t * @param {array} Array of DataTables settings objects to be filtered\n\t * @return {array}\n\t * @ignore\n\t */\n\tvar __table_selector = function ( selector, a )\n\t{\n\t\tif ( Array.isArray(selector) ) {\n\t\t\treturn $.map( selector, function (item) {\n\t\t\t\treturn __table_selector(item, a);\n\t\t\t} );\n\t\t}\n\t\n\t\t// Integer is used to pick out a table by index\n\t\tif ( typeof selector === 'number' ) {\n\t\t\treturn [ a[ selector ] ];\n\t\t}\n\t\n\t\t// Perform a jQuery selector on the table nodes\n\t\tvar nodes = $.map( a, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\treturn $(nodes)\n\t\t\t.filter( selector )\n\t\t\t.map( function (i) {\n\t\t\t\t// Need to translate back from the table node to the settings\n\t\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\t\treturn a[ idx ];\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\t\n\t\n\t\n\t/**\n\t * Context selector for the API's context (i.e. the tables the API instance\n\t * refers to.\n\t *\n\t * @name DataTable.Api#tables\n\t * @param {string|integer} [selector] Selector to pick which tables the iterator\n\t * should operate on. If not given, all tables in the current context are\n\t * used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n\t * select multiple tables or as an integer to select a single table.\n\t * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n\t */\n\t_api_register( 'tables()', function ( selector ) {\n\t\t// A new instance is created if there was a selector specified\n\t\treturn selector !== undefined && selector !== null ?\n\t\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\t\tthis;\n\t} );\n\t\n\t\n\t_api_register( 'table()', function ( selector ) {\n\t\tvar tables = this.tables( selector );\n\t\tvar ctx = tables.context;\n\t\n\t\t// Truncate to the first matched table\n\t\treturn ctx.length ?\n\t\t\tnew _Api( ctx[0] ) :\n\t\t\ttables;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTable;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTBody;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTHead;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTFoot;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTableWrapper;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Redraw the tables in the current context.\n\t */\n\t_api_register( 'draw()', function ( paging ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( paging === 'page' ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif ( typeof paging === 'string' ) {\n\t\t\t\t\tpaging = paging === 'full-hold' ?\n\t\t\t\t\t\tfalse :\n\t\t\t\t\t\ttrue;\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, paging===false );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get the current page index.\n\t *\n\t * @return {integer} Current page index (zero based)\n\t *//**\n\t * Set the current page.\n\t *\n\t * Note that if you attempt to show a page which does not exist, DataTables will\n\t * not throw an error, but rather reset the paging.\n\t *\n\t * @param {integer|string} action The paging action to take. This can be one of:\n\t * * `integer` - The page index to jump to\n\t * * `string` - An action to take:\n\t * * `first` - Jump to first page.\n\t * * `next` - Jump to the next page\n\t * * `previous` - Jump to previous page\n\t * * `last` - Jump to the last page.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page()', function ( action ) {\n\t\tif ( action === undefined ) {\n\t\t\treturn this.page.info().page; // not an expensive call\n\t\t}\n\t\n\t\t// else, have an action to take on all tables\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnPageChange( settings, action );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Paging information for the first table in the current context.\n\t *\n\t * If you require paging information for another table, use the `table()` method\n\t * with a suitable selector.\n\t *\n\t * @return {object} Object with the following properties set:\n\t * * `page` - Current page index (zero based - i.e. the first page is `0`)\n\t * * `pages` - Total number of pages\n\t * * `start` - Display index for the first record shown on the current page\n\t * * `end` - Display index for the last record shown on the current page\n\t * * `length` - Display length (number of records). Note that generally `start\n\t * + length = end`, but this is not always true, for example if there are\n\t * only 2 records to show on the final page, with a length of 10.\n\t * * `recordsTotal` - Full data set length\n\t * * `recordsDisplay` - Data set length once the current filtering criterion\n\t * are applied.\n\t */\n\t_api_register( 'page.info()', function ( action ) {\n\t\tif ( this.context.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\n\t\tvar\n\t\t\tsettings = this.context[0],\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tlen = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1,\n\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\tall = len === -1;\n\t\n\t\treturn {\n\t\t\t\"page\": all ? 0 : Math.floor( start / len ),\n\t\t\t\"pages\": all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\"start\": start,\n\t\t\t\"end\": settings.fnDisplayEnd(),\n\t\t\t\"length\": len,\n\t\t\t\"recordsTotal\": settings.fnRecordsTotal(),\n\t\t\t\"recordsDisplay\": visRecords,\n\t\t\t\"serverSide\": _fnDataSource( settings ) === 'ssp'\n\t\t};\n\t} );\n\t\n\t\n\t/**\n\t * Get the current page length.\n\t *\n\t * @return {integer} Current page length. Note `-1` indicates that all records\n\t * are to be shown.\n\t *//**\n\t * Set the current page length.\n\t *\n\t * @param {integer} Page length to set. Use `-1` to show all records.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page.len()', function ( len ) {\n\t\t// Note that we can't call this function 'length()' because `length`\n\t\t// is a Javascript property of functions which defines how many arguments\n\t\t// the function expects.\n\t\tif ( len === undefined ) {\n\t\t\treturn this.context.length !== 0 ?\n\t\t\t\tthis.context[0]._iDisplayLength :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// else, set the page length\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnLengthChange( settings, len );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\tvar __reload = function ( settings, holdPosition, callback ) {\n\t\t// Use the draw event to trigger a callback\n\t\tif ( callback ) {\n\t\t\tvar api = new _Api( settings );\n\t\n\t\t\tapi.one( 'draw', function () {\n\t\t\t\tcallback( api.ajax.json() );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t}\n\t\telse {\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t// Cancel an existing request\n\t\t\tvar xhr = settings.jqXHR;\n\t\t\tif ( xhr && xhr.readyState !== 4 ) {\n\t\t\t\txhr.abort();\n\t\t\t}\n\t\n\t\t\t// Trigger xhr\n\t\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t\t_fnClearTable( settings );\n\t\n\t\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the JSON response from the last Ajax request that DataTables made to the\n\t * server. Note that this returns the JSON from the first table in the current\n\t * context.\n\t *\n\t * @return {object} JSON received from the server.\n\t */\n\t_api_register( 'ajax.json()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t * position. A full re-sort and re-filter is performed when this method is\n\t * called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( type, selector, selectFn, settings, opts )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen,\n\t\t\tselectorType = typeof selector;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t\t// Only split on simple strings - complex expressions will be jQuery selectors\n\t\t\ta = selector[i] && selector[i].split && ! selector[i].match(/[\\[\\(:]/) ?\n\t\t\t\tselector[i].split(',') :\n\t\t\t\t[ selector[i] ];\n\t\n\t\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\t\tres = selectFn( typeof a[j] === 'string' ? (a[j]).trim() : a[j] );\n\t\n\t\t\t\tif ( res && res.length ) {\n\t\t\t\t\tout = out.concat( res );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// selector extensions\n\t\tvar ext = _ext.selector[ type ];\n\t\tif ( ext.length ) {\n\t\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\t\tout = ext[i]( settings, opts, out );\n\t\t\t}\n\t\t}\n\t\n\t\treturn _unique( out );\n\t};\n\t\n\t\n\tvar _selector_opts = function ( opts )\n\t{\n\t\tif ( ! opts ) {\n\t\t\topts = {};\n\t\t}\n\t\n\t\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t\t// than search\n\t\tif ( opts.filter && opts.search === undefined ) {\n\t\t\topts.search = opts.filter;\n\t\t}\n\t\n\t\treturn $.extend( {\n\t\t\tsearch: 'none',\n\t\t\torder: 'current',\n\t\t\tpage: 'all'\n\t\t}, opts );\n\t};\n\t\n\t\n\tvar _selector_first = function ( inst )\n\t{\n\t\t// Reduce the API instance to the first item found\n\t\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\t\tif ( inst[i].length > 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst[0].length = 1;\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search, // none, applied, removed\n\t\t\torder = opts.order, // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage = opts.page; // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and filter=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\t\ta.push( displayFiltered[i] );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'current' || order == 'applied' ) {\n\t\t\tif ( search == 'none') {\n\t\t\t\ta = displayMaster.slice();\n\t\t\t}\n\t\t\telse if ( search == 'applied' ) {\n\t\t\t\ta = displayFiltered.slice();\n\t\t\t}\n\t\t\telse if ( search == 'removed' ) {\n\t\t\t\t// O(n+m) solution by creating a hash map\n\t\t\t\tvar displayFilteredMap = {};\n\t\n\t\t\t\tfor ( var i=0, ien=displayFiltered.length ; i<ien ; i++ ) {\n\t\t\t\t\tdisplayFilteredMap[displayFiltered[i]] = null;\n\t\t\t\t}\n\t\n\t\t\t\ta = $.map( displayMaster, function (el) {\n\t\t\t\t\treturn ! displayFilteredMap.hasOwnProperty(el) ?\n\t\t\t\t\t\tel :\n\t\t\t\t\t\tnull;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'index' || order == 'original' ) {\n\t\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tif ( search == 'none' ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t\telse { // applied | removed\n\t\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\t\n\t\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t\t(tmp >= 0 && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {} - no selector - use all available rows\n\t * {integer} - row aoData index\n\t * {node} - TR node\n\t * {string} - jQuery selector to apply to the TR elements\n\t * {array} - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\tvar rows;\n\t\tvar run = function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\t\tvar i, ien;\n\t\t\tvar aoData = settings.aoData;\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tif ( ! rows ) {\n\t\t\t\trows = _selector_row_indexes( settings, opts );\n\t\t\t}\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( sel === null || sel === undefined || sel === '' ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Selector - function\n\t\t\tif ( typeof sel === 'function' ) {\n\t\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\t\tvar row = aoData[ idx ];\n\t\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Selector - node\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\tvar rowIdx = sel._DT_RowIndex; // Property added by DT for fast lookup\n\t\t\t\tvar cellIdx = sel._DT_CellIndex;\n\t\n\t\t\t\tif ( rowIdx !== undefined ) {\n\t\t\t\t\t// Make sure that the row is actually still present in the table\n\t\t\t\t\treturn aoData[ rowIdx ] && aoData[ rowIdx ].nTr === sel ?\n\t\t\t\t\t\t[ rowIdx ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t\telse if ( cellIdx ) {\n\t\t\t\t\treturn aoData[ cellIdx.row ] && aoData[ cellIdx.row ].nTr === sel.parentNode ?\n\t\t\t\t\t\t[ cellIdx.row ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar host = $(sel).closest('*[data-dt-row]');\n\t\t\t\t\treturn host.length ?\n\t\t\t\t\t\t[ host.data('dt-row') ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// ID selector. Want to always be able to select rows by id, regardless\n\t\t\t// of if the tr element has been created or not, so can't rely upon\n\t\t\t// jQuery here - hence a custom implementation. This does not match\n\t\t\t// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,\n\t\t\t// but to select it using a CSS selector engine (like Sizzle or\n\t\t\t// querySelect) it would need to need to be escaped for some characters.\n\t\t\t// DataTables simplifies this for row selectors since you can select\n\t\t\t// only a row. A # indicates an id any anything that follows is the id -\n\t\t\t// unescaped.\n\t\t\tif ( typeof sel === 'string' && sel.charAt(0) === '#' ) {\n\t\t\t\t// get row index from id\n\t\t\t\tvar rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];\n\t\t\t\tif ( rowObj !== undefined ) {\n\t\t\t\t\treturn [ rowObj.idx ];\n\t\t\t\t}\n\t\n\t\t\t\t// need to fall through to jQuery in case there is DOM id that\n\t\t\t\t// matches\n\t\t\t}\n\t\t\t\n\t\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\t\tvar nodes = _removeEmpty(\n\t\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t\t);\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t};\n\t\n\t\treturn _selector_run( 'row', selector, run, settings, opts );\n\t};\n\t\n\t\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidate( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {\n\t\tvar a = [];\n\t\tvar context = this.context;\n\t\n\t\t// `iterator` will drop undefined values, but in this case we want them\n\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\tfor ( var j=0, jen=this[i].length ; j<jen ; j++ ) {\n\t\t\t\tvar id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );\n\t\t\t\ta.push( (hash === true ? '#' : '' )+ id );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new _Api( context, a );\n\t} );\n\t\n\t_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\t\tvar that = this;\n\t\n\t\tthis.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\t\tvar data = settings.aoData;\n\t\t\tvar rowData = data[ row ];\n\t\t\tvar i, ien, j, jen;\n\t\t\tvar loopRow, loopCells;\n\t\n\t\t\tdata.splice( row, 1 );\n\t\n\t\t\t// Update the cached indexes\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tloopRow = data[i];\n\t\t\t\tloopCells = loopRow.anCells;\n\t\n\t\t\t\t// Rows\n\t\t\t\tif ( loopRow.nTr !== null ) {\n\t\t\t\t\tloopRow.nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\n\t\t\t\t// Cells\n\t\t\t\tif ( loopCells !== null ) {\n\t\t\t\t\tfor ( j=0, jen=loopCells.length ; j<jen ; j++ ) {\n\t\t\t\t\t\tloopCells[j]._DT_CellIndex.row = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Delete from the display arrays\n\t\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\t\n\t\t\t// For server-side processing tables - subtract the deleted row from the count\n\t\t\tif ( settings._iRecordsDisplay > 0 ) {\n\t\t\t\tsettings._iRecordsDisplay--;\n\t\t\t}\n\t\n\t\t\t// Check for an 'overflow' they case for displaying the table\n\t\t\t_fnLengthOverflow( settings );\n\t\n\t\t\t// Remove the row's ID reference if there is one\n\t\t\tvar id = settings.rowIdFn( rowData._aData );\n\t\t\tif ( id !== undefined ) {\n\t\t\t\tdelete settings.aIds[ id ];\n\t\t\t}\n\t\t} );\n\t\n\t\tthis.iterator( 'table', function ( settings ) {\n\t\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tsettings.aoData[i].idx = i;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'rows.add()', function ( rows ) {\n\t\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\t\tvar row, i, ien;\n\t\t\t\tvar out = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn out;\n\t\t\t}, 1 );\n\t\n\t\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\t\tvar modRows = this.rows( -1 );\n\t\tmodRows.pop();\n\t\t$.merge( modRows, newRows );\n\t\n\t\treturn modRows;\n\t} );\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'row()', function ( selector, opts ) {\n\t\treturn _selector_first( this.rows( selector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'row().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\tvar row = ctx[0].aoData[ this[0] ];\n\t\trow._aData = data;\n\t\n\t\t// If the DOM has an id, and the data source is an array\n\t\tif ( Array.isArray( data ) && row.nTr && row.nTr.id ) {\n\t\t\t_fnSetObjectDataFn( ctx[0].rowId )( data, row.nTr.id );\n\t\t}\n\t\n\t\t// Automatically invalidate\n\t\t_fnInvalidate( ctx[0], this[0], 'data' );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'row().node()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'row.add()', function ( row ) {\n\t\t// Allow a jQuery object to be passed in - only a single row is added from\n\t\t// it though - the first element in the set\n\t\tif ( row instanceof $ && row.length ) {\n\t\t\trow = row[0];\n\t\t}\n\t\n\t\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t\t}\n\t\t\treturn _fnAddData( settings, row );\n\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, with the newly added row selected\n\t\treturn this.row( rows[0] );\n\t} );\n\t\n\t\n\t$(document).on('plugin-init.dt', function (e, context) {\n\t\tvar api = new _Api( context );\n\t\n\t\tapi.on( 'stateSaveParams', function ( e, settings, d ) {\n\t\t\t// This could be more compact with the API, but it is a lot faster as a simple\n\t\t\t// internal loop\n\t\t\tvar idFn = settings.rowIdFn;\n\t\t\tvar data = settings.aoData;\n\t\t\tvar ids = [];\n\t\n\t\t\tfor (var i=0 ; i<data.length ; i++) {\n\t\t\t\tif (data[i]._detailsShow) {\n\t\t\t\t\tids.push( '#' + idFn(data[i]._aData) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\td.childRows = ids;\n\t\t})\n\t\n\t\tvar loaded = api.state.loaded();\n\t\n\t\tif ( loaded && loaded.childRows ) {\n\t\t\tapi\n\t\t\t\t.rows( $.map(loaded.childRows, function (id){\n\t\t\t\t\treturn id.replace(/:/g, '\\\\:')\n\t\t\t\t}) )\n\t\t\t\t.every( function () {\n\t\t\t\t\t_fnCallbackFire( context, null, 'requestChild', [ this ] )\n\t\t\t\t});\n\t\t}\n\t});\n\t\n\tvar __details_add = function ( ctx, row, data, klass )\n\t{\n\t\t// Convert to array of TR elements\n\t\tvar rows = [];\n\t\tvar addRow = function ( r, k ) {\n\t\t\t// Recursion to allow for arrays of jQuery objects\n\t\t\tif ( Array.isArray( r ) || r instanceof $ ) {\n\t\t\t\tfor ( var i=0, ien=r.length ; i<ien ; i++ ) {\n\t\t\t\t\taddRow( r[i], k );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t\t// to add the correct number of columns etc\n\t\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\t\trows.push( r );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Otherwise create a row with a wrapper\n\t\t\t\tvar created = $('<tr><td></td></tr>').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\taddRow( data, klass );\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.detach();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\t// Make state saving of child row details async to allow them to be batch processed\n\tvar __details_state = DataTable.util.throttle(\n\t\tfunction (ctx) {\n\t\t\t_fnSaveState( ctx[0] )\n\t\t},\n\t\t500\n\t);\n\t\n\t\n\tvar __details_remove = function ( api, idx )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length ) {\n\t\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\t\n\t\t\tif ( row && row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t\t$( row.nTr ).removeClass( 'dt-hasChild' );\n\t\t\t\t__details_state( ctx );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t$( row.nTr ).addClass( 'dt-hasChild' );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t\t$( row.nTr ).removeClass( 'dt-hasChild' );\n\t\t\t\t}\n\t\n\t\t\t\t_fnCallbackFire( ctx[0], null, 'childRow', [ show, api.row( api[0] ) ] )\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t\t__details_state( ctx );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-sizing'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = data[i];\n\t\n\t\t\t\t\tif ( row._details ) {\n\t\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Table destroyed - nuke any child rows\n\t\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t\t__details_remove( api, i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t// Strings for the method names to help minification\n\tvar _emp = '';\n\tvar _child_obj = _emp+'row().child';\n\tvar _child_mth = _child_obj+'()';\n\t\n\t// data can be:\n\t// tr\n\t// string\n\t// jQuery or array of any of the above\n\t_api_register( _child_mth, function ( data, klass ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\t\tundefined;\n\t\t}\n\t\telse if ( data === true ) {\n\t\t\t// show\n\t\t\tthis.child.show();\n\t\t}\n\t\telse if ( data === false ) {\n\t\t\t// remove\n\t\t\t__details_remove( this );\n\t\t}\n\t\telse if ( ctx.length && this.length ) {\n\t\t\t// set\n\t\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t\t}\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.show()',\n\t\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n\t], function ( show ) { // it returns an object and this method is not executed)\n\t\t__details_display( this, true );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.hide()',\n\t\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n\t], function () { // it returns an object and this method is not executed)\n\t\t__details_display( this, false );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.remove()',\n\t\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n\t], function () { // it returns an object and this method is not executed)\n\t\t__details_remove( this );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( _child_obj+'.isShown()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length && this.length ) {\n\t\t\t// _detailsShown as false or undefined will fall through to return false\n\t\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t\t}\n\t\treturn false;\n\t} );\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Columns\n\t *\n\t * {integer} - column index (>=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx (>=0 count from left, <0 count from right)\n\t * \"{string}:name\" - column name\n\t * \"{string}\" - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;\n\t\n\t\n\t// r1 and r2 are redundant - but it means that the parameters match for the\n\t// iterator callback in columns().data()\n\tvar __columnData = function ( settings, column, r1, r2, rows ) {\n\t\tvar a = [];\n\t\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\t\ta.push( _fnGetCellData( settings, rows[row], column ) );\n\t\t}\n\t\treturn a;\n\t};\n\t\n\t\n\tvar __column_selector = function ( settings, selector, opts )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tnames = _pluck( columns, 'sName' ),\n\t\t\tnodes = _pluck( columns, 'nTh' );\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar selInt = _intVal( s );\n\t\n\t\t\t// Selector - all\n\t\t\tif ( s === '' ) {\n\t\t\t\treturn _range( columns.length );\n\t\t\t}\n\t\n\t\t\t// Selector - index\n\t\t\tif ( selInt !== null ) {\n\t\t\t\treturn [ selInt >= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\n\t\t\t// Selector = function\n\t\t\tif ( typeof s === 'function' ) {\n\t\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\t\treturn s(\n\t\t\t\t\t\t\tidx,\n\t\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t\t) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// jQuery or string selector\n\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t'';\n\t\n\t\t\tif ( match ) {\n\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t} );\n\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Cell in the table body\n\t\t\tif ( s.nodeName && s._DT_CellIndex ) {\n\t\t\t\treturn [ s._DT_CellIndex.column ];\n\t\t\t}\n\t\n\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\tvar jqResult = $( nodes )\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise a node which might have a `dt-column` data attribute, or be\n\t\t\t// a child or such an element\n\t\t\tvar host = $(s).closest('*[data-dt-column]');\n\t\t\treturn host.length ?\n\t\t\t\t[ host.data('dt-column') ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'column', selector, run, settings, opts );\n\t};\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\ttr = data[i].nTr;\n\t\t\t\tcells = data[i].anCells;\n\t\n\t\t\t\tif ( tr ) {\n\t\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove column\n\t\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t\t}\n\t\n\t\t// Common actions\n\t\tcol.bVisible = vis;\n\t};\n\t\n\t\n\t_api_register( 'columns()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __column_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in _row_selector?\n\t\tinst.selector.cols = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTh;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTf;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\t\treturn this.iterator( 'column-rows', __columnData, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()', function () {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].mData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t\t);\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\t\tvar that = this;\n\t\tvar ret = this.iterator( 'column', function ( settings, column ) {\n\t\t\tif ( vis === undefined ) {\n\t\t\t\treturn settings.aoColumns[ column ].bVisible;\n\t\t\t} // else\n\t\t\t__setColumnVis( settings, column, vis );\n\t\t} );\n\t\n\t\t// Group the column visibility changes\n\t\tif ( vis !== undefined ) {\n\t\t\tthis.iterator( 'table', function ( settings ) {\n\t\t\t\t// Redraw the header after changes\n\t\t\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\t\n\t\t\t\t// Update colspan for no records display. Child rows and extensions will use their own\n\t\t\t\t// listeners to do this - only need to update the empty table item here\n\t\t\t\tif ( ! settings.aiDisplay.length ) {\n\t\t\t\t\t$(settings.nTBody).find('td[colspan]').attr('colspan', _fnVisbleColumns(settings));\n\t\t\t\t}\n\t\t\n\t\t\t\t_fnSaveState( settings );\n\t\n\t\t\t\t// Second loop once the first is done for events\n\t\t\t\tthat.iterator( 'column', function ( settings, column ) {\n\t\t\t\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis, calc] );\n\t\t\t\t} );\n\t\n\t\t\t\tif ( calc === undefined || calc ) {\n\t\t\t\t\tthat.columns.adjust();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\n\t\treturn ret;\n\t} );\n\t\n\t_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn type === 'visible' ?\n\t\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\t\tcolumn;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'columns.adjust()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'column.index()', function ( type, idx ) {\n\t\tif ( this.context.length !== 0 ) {\n\t\t\tvar ctx = this.context[0];\n\t\n\t\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t\t}\n\t\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t_api_register( 'column()', function ( selector, opts ) {\n\t\treturn _selector_first( this.columns( selector, opts ) );\n\t} );\n\t\n\tvar __cell_selector = function ( settings, selector, opts )\n\t{\n\t\tvar data = settings.aoData;\n\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\tvar cells = _removeEmpty( _pluck_order( data, rows, 'anCells' ) );\n\t\tvar allCells = $(_flatten( [], cells ));\n\t\tvar row;\n\t\tvar columns = settings.aoColumns.length;\n\t\tvar a, i, ien, j, o, host;\n\t\n\t\tvar run = function ( s ) {\n\t\t\tvar fnSelector = typeof s === 'function';\n\t\n\t\t\tif ( s === null || s === undefined || fnSelector ) {\n\t\t\t\t// All cells and function selectors\n\t\t\t\ta = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\t\to = {\n\t\t\t\t\t\t\trow: row,\n\t\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\tif ( fnSelector ) {\n\t\t\t\t\t\t\t// Selector - function\n\t\t\t\t\t\t\thost = data[ row ];\n\t\n\t\t\t\t\t\t\tif ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {\n\t\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Selector - all\n\t\t\t\t\t\t\ta.push( o );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn a;\n\t\t\t}\n\t\t\t\n\t\t\t// Selector - index\n\t\t\tif ( $.isPlainObject( s ) ) {\n\t\t\t\t// Valid cell index and its in the array of selectable rows\n\t\t\t\treturn s.column !== undefined && s.row !== undefined && $.inArray( s.row, rows ) !== -1 ?\n\t\t\t\t\t[s] :\n\t\t\t\t\t[];\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery filtered cells\n\t\t\tvar jqResult = allCells\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function (i, el) {\n\t\t\t\t\treturn { // use a new object, in case someone changes the values\n\t\t\t\t\t\trow: el._DT_CellIndex.row,\n\t\t\t\t\t\tcolumn: el._DT_CellIndex.column\n\t \t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise the selector is a node, and there is one last option - the\n\t\t\t// element might be a child of an element which has dt-row and dt-column\n\t\t\t// data attributes\n\t\t\thost = $(s).closest('*[data-dt-row]');\n\t\t\treturn host.length ?\n\t\t\t\t[ {\n\t\t\t\t\trow: host.data('dt-row'),\n\t\t\t\t\tcolumn: host.data('dt-column')\n\t\t\t\t} ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'cell', selector, run, settings, opts );\n\t};\n\t\n\t\n\t\n\t\n\t_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t\t// Argument shifting\n\t\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t\t// Indexes\n\t\t\tif ( rowSelector.row === undefined ) {\n\t\t\t\t// Selector options in first parameter\n\t\t\t\topts = rowSelector;\n\t\t\t\trowSelector = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Cell index objects in first parameter\n\t\t\t\topts = columnSelector;\n\t\t\t\tcolumnSelector = null;\n\t\t\t}\n\t\t}\n\t\tif ( $.isPlainObject( columnSelector ) ) {\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t\n\t\t// Cell selector\n\t\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t\t} );\n\t\t}\n\t\n\t\t// The default built in options need to apply to row and columns\n\t\tvar internalOpts = opts ? {\n\t\t\tpage: opts.page,\n\t\t\torder: opts.order,\n\t\t\tsearch: opts.search\n\t\t} : {};\n\t\n\t\t// Row + column selector\n\t\tvar columns = this.columns( columnSelector, internalOpts );\n\t\tvar rows = this.rows( rowSelector, internalOpts );\n\t\tvar i, ien, j, jen;\n\t\n\t\tvar cellsNoOpts = this.iterator( 'table', function ( settings, idx ) {\n\t\t\tvar a = [];\n\t\n\t\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\t\ta.push( {\n\t\t\t\t\t\trow: rows[idx][i],\n\t\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn a;\n\t\t}, 1 );\n\t\n\t\t// There is currently only one extension which uses a cell selector extension\n\t\t// It is a _major_ performance drag to run this if it isn't needed, so this is\n\t\t// an extension specific check at the moment\n\t\tvar cells = opts && opts.selected ?\n\t\t\tthis.cells( cellsNoOpts, opts ) :\n\t\t\tcellsNoOpts;\n\t\n\t\t$.extend( cells.selector, {\n\t\t\tcols: columnSelector,\n\t\t\trows: rowSelector,\n\t\t\topts: opts\n\t\t} );\n\t\n\t\treturn cells;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\tvar data = settings.aoData[ row ];\n\t\n\t\t\treturn data && data.anCells ?\n\t\t\t\tdata.anCells[ column ] :\n\t\t\t\tundefined;\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_register( 'cells().data()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\t\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\t\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ][ type ][ column ];\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().render()', 'cell().render()', function ( type ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column, type );\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcolumn: column,\n\t\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t\t};\n\t\t}, 1 );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().invalidate()', 'cell().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\t_fnInvalidate( settings, row, src, column );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\t\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'cell().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\tvar cell = this[0];\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && cell.length ?\n\t\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t\t_fnInvalidate( ctx[0], cell[0].row, 'data', cell[0].column );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get current ordering (sorting) that has been applied to the table.\n\t *\n\t * @returns {array} 2D array containing the sorting information for the first\n\t * table in the current context. Each element in the parent array represents\n\t * a column being sorted upon (i.e. multi-sorting with two columns would have\n\t * 2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n\t * the column index that the sorting condition applies to, the second is the\n\t * direction of the sort (`desc` or `asc`) and, optionally, the third is the\n\t * index of the sorting order from the `column.sorting` initialisation array.\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {integer} order Column index to sort upon.\n\t * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 1D array of sorting information to be applied.\n\t * @param {array} [...] Optional additional sorting conditions\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 2D array of sorting information to be applied.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order()', function ( order, dir ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( order === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].aaSorting :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\tif ( typeof order === 'number' ) {\n\t\t\t// Simple column / direction passed in\n\t\t\torder = [ [ order, dir ] ];\n\t\t}\n\t\telse if ( order.length && ! Array.isArray( order[0] ) ) {\n\t\t\t// Arguments passed in (list of 1D arrays)\n\t\t\torder = Array.prototype.slice.call( arguments );\n\t\t}\n\t\t// otherwise a 2D array was passed in\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSorting = order.slice();\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *\n\t * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n\t * listener to. This can take the form of a single DOM node, a jQuery\n\t * collection of nodes or a jQuery selector which will identify the node(s).\n\t * @param {integer} column the column that a click on this node will sort on\n\t * @param {function} [callback] callback function when sort is run\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order.listener()', function ( node, column, callback ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSortAttachListener( settings, node, column, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'order.fixed()', function ( set ) {\n\t\tif ( ! set ) {\n\t\t\tvar ctx = this.context;\n\t\t\tvar fixed = ctx.length ?\n\t\t\t\tctx[0].aaSortingFixed :\n\t\t\t\tundefined;\n\t\n\t\t\treturn Array.isArray( fixed ) ?\n\t\t\t\t{ pre: fixed } :\n\t\t\t\tfixed;\n\t\t}\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSortingFixed = $.extend( true, {}, set );\n\t\t} );\n\t} );\n\t\n\t\n\t// Order by the selected column(s)\n\t_api_register( [\n\t\t'columns().order()',\n\t\t'column().order()'\n\t], function ( dir ) {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'table', function ( settings, i ) {\n\t\t\tvar sort = [];\n\t\n\t\t\t$.each( that[i], function (j, col) {\n\t\t\t\tsort.push( [ col, dir ] );\n\t\t\t} );\n\t\n\t\t\tsettings.aaSorting = sort;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( input === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\": regex === null ? false : regex,\n\t\t\t\t\"bSmart\": smart === null ? true : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} ), 1 );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural(\n\t\t'columns().search()',\n\t\t'column().search()',\n\t\tfunction ( input, regex, smart, caseInsen ) {\n\t\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\t\tvar preSearch = settings.aoPreSearchCols;\n\t\n\t\t\t\tif ( input === undefined ) {\n\t\t\t\t\t// get\n\t\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t\t}\n\t\n\t\t\t\t// set\n\t\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\t\"bRegex\": regex === null ? false : regex,\n\t\t\t\t\t\"bSmart\": smart === null ? true : smart,\n\t\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t\t} );\n\t\n\t\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t\t} );\n\t\t}\n\t);\n\t\n\t/*\n\t * State API methods\n\t */\n\t\n\t_api_register( 'state()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oSavedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t// Save an empty object\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'state.loaded()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oLoadedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.save()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSaveState( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being\n\t * used, in order to ensure compatibility.\n\t *\n\t * @param {string} version Version string to check for, in the format \"X.Y.Z\".\n\t * Note that the formats \"X\" and \"X.Y\" are also acceptable.\n\t * @returns {boolean} true if this version of DataTables is greater or equal to\n\t * the required version, or false if this version of DataTales is not\n\t * suitable\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n\t */\n\tDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n\t{\n\t\tvar aThis = DataTable.version.split('.');\n\t\tvar aThat = version.split('.');\n\t\tvar iThis, iThat;\n\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\t\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `<table>` node is a DataTable table already or not.\n\t *\n\t * @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t * selector for the table to test. Note that if more than more than one\n\t * table is passed on, only the first will be checked\n\t * @returns {boolean} true the table given is a DataTable, or false otherwise\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t * $('#example').dataTable();\n\t * }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\tif ( table instanceof DataTable.Api ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tvar head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;\n\t\t\tvar foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;\n\t\n\t\t\tif ( o.nTable === t || head === t || foot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t * @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t * or visible tables only.\n\t * @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t * DataTables\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * $.each( $.fn.dataTable.tables(true), function () {\n\t * $(table).DataTable().columns.adjust();\n\t * } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\tvar api = false;\n\t\n\t\tif ( $.isPlainObject( visible ) ) {\n\t\t\tapi = visible.api;\n\t\t\tvisible = visible.visible;\n\t\t}\n\t\n\t\tvar a = $.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn api ?\n\t\t\tnew _Api( a ) :\n\t\t\ta;\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t * @param {object} src The model object which holds all parameters that can be\n\t * mapped.\n\t * @param {object} user The object to convert from camel case to Hungarian.\n\t * @param {boolean} force When set to `true`, properties which already have a\n\t * Hungarian value in the `user` object will be overwritten. Otherwise they\n\t * won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\targs[0] = $.map( args[0].split( /\\s/ ), function ( e ) {\n\t\t\t\treturn ! e.match(/\\.dt\\b/) ?\n\t\t\t\t\te+'.dt' :\n\t\t\t\t\te;\n\t\t\t\t} ).join( ' ' );\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'init()', function () {\n\t\tvar ctx = this.context;\n\t\treturn ctx.length ? ctx[0].oInit : null;\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar classes = settings.oClasses;\n\t\t\tvar table = settings.nTable;\n\t\t\tvar tbody = settings.nTBody;\n\t\t\tvar thead = settings.nTHead;\n\t\t\tvar tfoot = settings.nTFoot;\n\t\t\tvar jqTable = $(table);\n\t\t\tvar jqTbody = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.off('.DT').find(':not(tbody *)').off('.DT');\n\t\t\t$(window).off('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\tvar orig = settings.nTableWrapper.parentNode;\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tvar removedMethod = remove ? 'remove' : 'detach';\n\t\t\tjqTable[ removedMethod ]();\n\t\t\tjqWrapper[ removedMethod ]();\n\t\n\t\t\t// If we need to reattach the table to the document\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\n\t\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t\t// so we can restore directly to that\n\t\t\t\tjqTable\n\t\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\t\tif ( ien ) {\n\t\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t// Add the `every()` method for rows, columns and cells in a compact form\n\t$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {\n\t\t_api_register( type+'s().every()', function ( fn ) {\n\t\t\tvar opts = this.selector.opts;\n\t\t\tvar api = this;\n\t\n\t\t\treturn this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {\n\t\t\t\t// Rows and columns:\n\t\t\t\t// arg1 - index\n\t\t\t\t// arg2 - table counter\n\t\t\t\t// arg3 - loop counter\n\t\t\t\t// arg4 - undefined\n\t\t\t\t// Cells:\n\t\t\t\t// arg1 - row index\n\t\t\t\t// arg2 - column index\n\t\t\t\t// arg3 - table counter\n\t\t\t\t// arg4 - loop counter\n\t\t\t\tfn.call(\n\t\t\t\t\tapi[ type ](\n\t\t\t\t\t\targ1,\n\t\t\t\t\t\ttype==='cell' ? arg2 : opts,\n\t\t\t\t\t\ttype==='cell' ? opts : undefined\n\t\t\t\t\t),\n\t\t\t\t\targ1, arg2, arg3, arg4\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t} );\n\t\n\t\n\t// i18n method for extensions to be able to use the language object from the\n\t// DataTable\n\t_api_register( 'i18n()', function ( token, def, plural ) {\n\t\tvar ctx = this.context[0];\n\t\tvar resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );\n\t\n\t\tif ( resolved === undefined ) {\n\t\t\tresolved = def;\n\t\t}\n\t\n\t\tif ( plural !== undefined && $.isPlainObject( resolved ) ) {\n\t\t\tresolved = resolved[ plural ] !== undefined ?\n\t\t\t\tresolved[ plural ] :\n\t\t\t\tresolved._;\n\t\t}\n\t\n\t\treturn resolved.replace( '%d', plural ); // nb: plural might be undefined,\n\t} );\t\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t * @member\n\t * @type string\n\t * @default Version number\n\t */\n\tDataTable.version = \"1.12.1\";\n\t\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t * @member\n\t * @type array\n\t * @default []\n\t * @private\n\t */\n\tDataTable.settings = [];\n\t\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t * @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t * @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bSmart\": true,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables should only trigger a search when\n\t\t * the return key is pressed.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"return\": false\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t * @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t * @type array nodes\n\t\t * @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t * @type array|object\n\t\t * @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t * @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"src\": null,\n\t\n\t\t/**\n\t\t * Index in the aoData array. This saves an indexOf lookup when we have the\n\t\t * object, but want to know the index\n\t\t * @type integer\n\t\t * @default -1\n\t\t * @private\n\t\t */\n\t\t\"idx\": -1\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t * @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t * @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t * @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t * @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} nTd The TD node that has been created\n\t\t * @param {*} sData The Data for the cell\n\t\t * @param {array|object} oData The data for the whole row\n\t\t * @param {int} iRow The row index for the aoData data store\n\t\t * @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {string} sSpecific The specific data type you want to get -\n\t\t * 'display', 'type' 'filter' 'sort'\n\t\t * @returns {*} The data for the cell from the given row's data\n\t\t * @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b>\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {*} sValue Value to set\n\t\t * @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t * @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t * @type string\n\t\t * @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t * @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would add around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit).\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t * @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.data\n\t\t *\n\t\t * @example\n\t\t * // Using a 2D array data source\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\" },\n\t\t * { \"title\": \"Browser\" },\n\t\t * { \"title\": \"Platform\" },\n\t\t * { \"title\": \"Version\" },\n\t\t * { \"title\": \"Grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using an array of objects as a data source (`data`)\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 4.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 4,\n\t\t * \"grade\": \"X\"\n\t\t * },\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 5.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 5,\n\t\t * \"grade\": \"C\"\n\t\t * }\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\", \"data\": \"engine\" },\n\t\t * { \"title\": \"Browser\", \"data\": \"browser\" },\n\t\t * { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t * { \"title\": \"Version\", \"data\": \"version\" },\n\t\t * { \"title\": \"Grade\", \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t * @type array\n\t\t * @default [[0,'asc']]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.order\n\t\t *\n\t\t * @example\n\t\t * // Sort by 3rd column first, and then 4th column\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": [[2,'asc'], [3,'desc']]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * // No initial sorting\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": []\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.orderFixed\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderFixed\": [[0,'asc']]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t * can also be used as a function to manipulate the data DataTables sends\n\t\t * to the server. The function takes a single parameter, an object of\n\t\t * parameters with the values that DataTables has readied for sending. An\n\t\t * object may be returned which will be merged into the DataTables\n\t\t * defaults, or you can add the items to the object that was passed in and\n\t\t * not return anything from the function. This supersedes `fnServerParams`\n\t\t * from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t * `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t * from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted\n\t\t * object notation to get a data source for multiple levels of nesting, or\n\t\t * it my be used as a function. As a function it takes a single parameter,\n\t\t * the JSON returned from the server, which can be manipulated as\n\t\t * required, with the returned value being that used by DataTables as the\n\t\t * data source for the table. This supersedes `sAjaxDataProp` from\n\t\t * DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t * DataTables. To manipulate / transform the data returned by the server\n\t\t * use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t * data has been obtained. That data should be passed into the callback\n\t\t * as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t * @type string|object|function\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.ajax\n\t\t * @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax.\n\t\t * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"data.json\"\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"tableData\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t * // from a plain array rather than an array in an object\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Manipulate the data returned from the server - add a link to data\n\t\t * // (note this can, should, be done using `render` for the column - this\n\t\t * // is just a simple example of how the data can be manipulated).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": function ( json ) {\n\t\t * for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t\t * json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t\t * }\n\t\t * return json;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Add data to the request\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"data\": function ( d ) {\n\t\t * return {\n\t\t * \"extra_search\": $('#extra').val()\n\t\t * };\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Send request as POST\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"type\": \"POST\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get the data from localStorage (could interface with a form for\n\t\t * // adding, editing and removing rows).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": function (data, callback, settings) {\n\t\t * callback(\n\t\t * JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t * );\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t * @type array\n\t\t * @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t * <ul>\n\t\t * <li>a string - class name will be matched on the TH for the column</li>\n\t\t * <li>0 or a positive integer - column index counting from the left</li>\n\t\t * <li>a negative integer - column index counting from the right</li>\n\t\t * <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t * </ul>\n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.searchCols\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchCols\": [\n\t\t * null,\n\t\t * { \"search\": \"My filter\" },\n\t\t * null,\n\t\t * { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t * ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t * @type array\n\t\t * @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t\t * options</i>\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.autoWidth\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"autoWidth\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.deferRender\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"sources/arrays.txt\",\n\t\t * \"deferRender\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.destroy\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"srollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t *\n\t\t * // Some time later....\n\t\t * $('#example').dataTable( {\n\t\t * \"filter\": false,\n\t\t * \"destroy\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.searching\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"searching\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.info\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"info\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.lengthChange\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthChange\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.paging\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"paging\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.processing\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"processing\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.retrieve\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * initTable();\n\t\t * tableActions();\n\t\t * } );\n\t\t *\n\t\t * function initTable ()\n\t\t * {\n\t\t * return $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false,\n\t\t * \"retrieve\": true\n\t\t * } );\n\t\t * }\n\t\t *\n\t\t * function tableActions ()\n\t\t * {\n\t\t * var table = initTable();\n\t\t * // perform API operations with oTable\n\t\t * }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200\",\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverSide\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"xhr.php\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.ordering\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"ordering\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderMulti\n\t\t *\n\t\t * @example\n\t\t * // Disable multiple column sorting ability\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderMulti\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderCellsTop\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.orderClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderClasses\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.stateSave\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.createdRow\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"createdRow\": function( row, data, dataIndex ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" )\n\t\t * {\n\t\t * $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.drawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"drawCallback\": function( settings ) {\n\t\t * alert( 'DataTables has redrawn the table' );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t * @type function\n\t\t * @param {node} foot \"TR\" element for the footer\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.footerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t * tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {int} toFormat number to be formatted\n\t\t * @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.formatNumber\n\t\t *\n\t\t * @example\n\t\t * // Format a number using a single quote for the separator (note that\n\t\t * // this can also be done with the language.thousands option)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"formatNumber\": function ( toFormat ) {\n\t\t * return toFormat.toString().replace(\n\t\t * /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t * );\n\t\t * };\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t * @type function\n\t\t * @param {node} head \"TR\" element for the header\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.headerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t * head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t * @type function\n\t\t * @param {object} oSettings DataTables settings object\n\t\t * @param {int} start Starting position in data for the draw\n\t\t * @param {int} end End position in data for the draw\n\t\t * @param {int} max Total number of rows in the table (regardless of\n\t\t * filtering)\n\t\t * @param {int} total Total number of rows in the data set, after filtering\n\t\t * @param {string} pre The string that DataTables has formatted using it's\n\t\t * own rules\n\t\t * @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.infoCallback\n\t\t *\n\t\t * @example\n\t\t * $('#example').dataTable( {\n\t\t * \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t * return start +\" to \"+ end;\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} json The JSON object request from the server - only\n\t\t * present if client-side Ajax sourced data is used\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.initComplete\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"initComplete\": function(settings, json) {\n\t\t * alert( 'DataTables has finished its initialisation.' );\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @returns {boolean} False will cancel the draw, anything else (including no\n\t\t * return) will allow it to complete.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"preDrawCallback\": function( settings ) {\n\t\t * if ( $('#test').val() == 1 ) {\n\t\t * return false;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} displayIndex The display index for the current table draw\n\t\t * @param {int} displayIndexFull The index of the data in the full list of\n\t\t * rows (after filtering)\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.rowCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" ) {\n\t\t * $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t * @param {array} data A key/value pair object containing the data to send\n\t\t * to the server\n\t\t * @param {function} callback to be called on completion of the data get\n\t\t * process that will draw the data on the page.\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverData\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t * @type function\n\t\t * @param {array} data Data array (array of objects which are name/value\n\t\t * pairs) that has been constructed by DataTables and will be sent to the\n\t\t * server. In the case of Ajax sourced data with server-side processing\n\t\t * this will be an empty array, for server-side processing there will be a\n\t\t * significant number of parameters!\n\t\t * @returns {undefined} Ensure that you modify the data array passed in,\n\t\t * as this is passed by reference.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverParams\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} callback Callback that can be executed when done. It\n\t\t * should be passed the loaded state object.\n\t\t * @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadCallback\": function (settings, callback) {\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_load\",\n\t\t * \"dataType\": \"json\",\n\t\t * \"success\": function (json) {\n\t\t * callback( json );\n\t\t * }\n\t\t * } );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that is to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never loaded\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Disallow state loading by returning false\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * return false;\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that was loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t * @example\n\t\t * // Show an alert with the filtering value that was saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoaded\": function (settings, data) {\n\t\t * alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveCallback\": function (settings, data) {\n\t\t * // Send an Ajax request to the server with the state object\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_save\",\n\t\t * \"data\": data,\n\t\t * \"dataType\": \"json\",\n\t\t * \"method\": \"POST\"\n\t\t * \"success\": function () {}\n\t\t * } );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t * @type int\n\t\t * @default 7200 <i>(2 hours)</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.stateDuration\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateDuration\": 60*60*24; // 1 day\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t * @type int | array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.deferLoading\n\t\t *\n\t\t * @example\n\t\t * // 57 records available in the table, no filtering applied\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": 57\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": [ 57, 100 ],\n\t\t * \"search\": {\n\t\t * \"search\": \"my_filter\"\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t * @type int\n\t\t * @default 10\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pageLength\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pageLength\": 50\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.displayStart\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"displayStart\": 20\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.tabIndex\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"tabIndex\": 1\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t * @namespace\n\t\t * @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t * @namespace\n\t\t * @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t * @type string\n\t\t\t\t * @default First\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"first\": \"First page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t * @type string\n\t\t\t\t * @default Last\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"last\": \"Last page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Next\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"next\": \"Next page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Previous\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"previous\": \"Previous page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t * @type string\n\t\t\t * @default No data available in table\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"emptyTable\": \"No data available in table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t * @type string\n\t\t\t * @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t * @type string\n\t\t\t * @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoEmpty\": \"No entries to show\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t * @type string\n\t\t\t * @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t * @type string\n\t\t\t * @default <i>Empty string</i>\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"decimal\": \",\"\n\t\t\t * \"thousands\": \".\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t * @type string\n\t\t\t * @default ,\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"thousands\": \"'\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t * @type string\n\t\t\t * @default Show _MENU_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language change only\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language and options change\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": 'Display <select>'+\n\t\t\t * '<option value=\"10\">10</option>'+\n\t\t\t * '<option value=\"20\">20</option>'+\n\t\t\t * '<option value=\"30\">30</option>'+\n\t\t\t * '<option value=\"40\">40</option>'+\n\t\t\t * '<option value=\"50\">50</option>'+\n\t\t\t * '<option value=\"-1\">All</option>'+\n\t\t\t * '</select> records'\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t * @type string\n\t\t\t * @default Loading...\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t * @type string\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"processing\": \"DataTables is currently busy\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t * @type string\n\t\t\t * @default Search:\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Input text box will be appended at the end automatically\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Filter records:\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Specify where the filter should appear\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t * @type string\n\t\t\t * @default <i>Empty string - i.e. disabled</i>\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t * @type string\n\t\t\t * @default No matching records found\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"zeroRecords\": \"No records to display\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.search\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"search\": {\"search\": \"Initial search\"}\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t * @type string\n\t\t * @default data\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t * <ul>\n\t\t * <li>The following options are allowed:\n\t\t * <ul>\n\t\t * <li>'l' - Length changing</li>\n\t\t * <li>'f' - Filtering input</li>\n\t\t * <li>'t' - The table!</li>\n\t\t * <li>'i' - Information</li>\n\t\t * <li>'p' - Pagination</li>\n\t\t * <li>'r' - pRocessing</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>The following constants are allowed:\n\t\t * <ul>\n\t\t * <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t * <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>The following syntax is expected:\n\t\t * <ul>\n\t\t * <li>'<' and '>' - div elements</li>\n\t\t * <li>'<\"class\" and '>' - div with a class</li>\n\t\t * <li>'<\"#id\" and '>' - div with an ID</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * <li>Examples:\n\t\t * <ul>\n\t\t * <li>'<\"wrapper\"flipt>'</li>\n\t\t * <li>'<lf<t>ip>'</li>\n\t\t * </ul>\n\t\t * </li>\n\t\t * </ul>\n\t\t * @type string\n\t\t * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t\t * <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.dom\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"dom\": '<\"top\"i>rt<\"bottom\"flp><\"clear\">'\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * Search delay option. This will throttle full table searches that use the\n\t\t * DataTables provided search input element (it does not effect calls to\n\t\t * `dt-api search()`, providing a delay before the search is made.\n\t\t * @type integer\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.searchDelay\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchDelay\": 200\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\n\t\t/**\n\t\t * DataTables features six different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `numbers` - Page number buttons only\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers\n\t\t * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers\n\t\t * \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t * @type string\n\t\t * @default simple_numbers\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pagingType\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pagingType\": \"full_numbers\"\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t * @type boolean|string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollX\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": true,\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t * @type string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": \"100%\",\n\t\t * \"scrollXInner\": \"110%\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t * @type string\n\t\t * @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollY\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t * @type string\n\t\t * @default GET\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverMethod\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t * @type string|object\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null,\n\t\n\t\n\t\t/**\n\t\t * Set the data property name that DataTables should use to get a row's id\n\t\t * to set as the `id` property in the node.\n\t\t * @type string\n\t\t * @default DT_RowId\n\t\t *\n\t\t * @name DataTable.defaults.rowId\n\t\t */\n\t\t\"rowId\": \"DT_RowId\"\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t * @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t * @type array|int\n\t\t * @default null <i>Takes the value of the column index automatically</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.orderData\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t * { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t * { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderData\": [ 0, 1 ] },\n\t\t * { \"orderData\": [ 1, 0 ] },\n\t\t * { \"orderData\": 2 },\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t * @type array\n\t\t * @default [ 'asc', 'desc' ]\n\t\t *\n\t\t * @name DataTable.defaults.column.orderSequence\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t * { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * { \"orderSequence\": [ \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\" ] },\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.searchable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"searchable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.orderable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.visible\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"visible\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"visible\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} td The TD node that has been created\n\t\t * @param {*} cellData The Data for the cell\n\t\t * @param {array|object} rowData The data for the whole row\n\t\t * @param {int} row The row index for the aoData data store\n\t\t * @param {int} col The column index for aoColumns\n\t\t *\n\t\t * @name DataTable.defaults.column.createdCell\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [3],\n\t\t * \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t * if ( cellData == \"1.7\" ) {\n\t\t * $(td).css('color', 'blue')\n\t\t * }\n\t\t * }\n\t\t * } ]\n\t\t * });\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t * @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object. Note that\n\t\t * function notation is recommended for use in `render` rather than\n\t\t * `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t * data directly from it. This action has effects on two other\n\t\t * initialisation options:\n\t\t * * `defaultContent` - When null is given as the `data` option and\n\t\t * `defaultContent` is specified for the column, the value defined by\n\t\t * `defaultContent` will be used for the cell.\n\t\t * * `render` - When null is used for the `data` option and the `render`\n\t\t * option is specified for the column, the whole data source for the\n\t\t * row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * `{array|object}` The data source for the row\n\t\t * * `{string}` The type call data requested - this will be 'set' when\n\t\t * setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t * when gathering data. Note that when `undefined` is given for the\n\t\t * type DataTables expects to get the raw data for the object back<\n\t\t * * `{*}` Data to set when the second parameter is 'set'.\n\t\t * * Return:\n\t\t * * The return value from the function is not required when 'set' is\n\t\t * the type of call, but otherwise the return is what will be used\n\t\t * for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t * @type string|int|function|null\n\t\t * @default null <i>Use automatically calculated column index</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.data\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Read table data from objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {value},\n\t\t * // \"version\": {value},\n\t\t * // \"grade\": {value}\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/objects.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform\" },\n\t\t * { \"data\": \"version\" },\n\t\t * { \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Read information from deeply nested objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {\n\t\t * // \"inner\": {value}\n\t\t * // },\n\t\t * // \"details\": [\n\t\t * // {value}, {value}\n\t\t * // ]\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform.inner\" },\n\t\t * { \"data\": \"details.0\" },\n\t\t * { \"data\": \"details.1\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `data` as a function to provide different information for\n\t\t * // sorting, filtering and display. In this case, currency (price)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": function ( source, type, val ) {\n\t\t * if (type === 'set') {\n\t\t * source.price = val;\n\t\t * // Store the computed display and filter values for efficiency\n\t\t * source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t * source.price_filter = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t * return;\n\t\t * }\n\t\t * else if (type === 'display') {\n\t\t * return source.price_display;\n\t\t * }\n\t\t * else if (type === 'filter') {\n\t\t * return source.price_filter;\n\t\t * }\n\t\t * // 'sort', 'type' and undefined all just use the integer\n\t\t * return source.price;\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using default content\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Click to edit\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using array notation - outputting a list from an array\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"name[, ]\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t * DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t * of the object is the data type the property refers to and the value can\n\t\t * defined using an integer, string or function using the same rules as\n\t\t * `render` normally does. Note that an `_` option _must_ be specified.\n\t\t * This is the default value to use if you haven't specified a value for\n\t\t * the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * {array|object} The data source for the row (based on `data`)\n\t\t * * {string} The type call data requested - this will be 'filter',\n\t\t * 'display', 'type' or 'sort'.\n\t\t * * {array|object} The full data source for the row (not based on\n\t\t * `data`)\n\t\t * * Return:\n\t\t * * The return value from the function is what will be used for the\n\t\t * data requested.\n\t\t *\n\t\t * @type string|int|function|object|null\n\t\t * @default null Use the data source value.\n\t\t *\n\t\t * @name DataTable.defaults.column.render\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Create a comma separated list from an array of objects\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * {\n\t\t * \"data\": \"platform\",\n\t\t * \"render\": \"[, ].name\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Execute a function to obtain data\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": \"browserName()\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // As an object, extracting different data for the different types\n\t\t * // This would be used with a data source such as:\n\t\t * // { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t * // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t * // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t * // the formatted phone number is the one that is shown in the table.\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": {\n\t\t * \"_\": \"phone\",\n\t\t * \"filter\": \"phone_filter\",\n\t\t * \"display\": \"phone_display\"\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Use as a function to create a link from the data source\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"download_link\",\n\t\t * \"render\": function ( data, type, full ) {\n\t\t * return '<a href=\"'+data+'\">Download</a>';\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t * @type string\n\t\t * @default td\n\t\t *\n\t\t * @name DataTable.defaults.column.cellType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Make the first column use TH cells\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"cellType\": \"th\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.class\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"class\": \"my_class\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t * @type string\n\t\t * @default <i>Empty string<i>\n\t\t *\n\t\t * @name DataTable.defaults.column.contentPadding\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"contentPadding\": \"mmm\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.column.defaultContent\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\",\n\t\t * \"targets\": [ -1 ]\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.name\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t * { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t * { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t * { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t * { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"name\": \"engine\" },\n\t\t * { \"name\": \"browser\" },\n\t\t * { \"name\": \"platform\" },\n\t\t * { \"name\": \"version\" },\n\t\t * { \"name\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t * @type string\n\t\t * @default std\n\t\t *\n\t\t * @name DataTable.defaults.column.orderDataType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t * { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t * { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t * { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * { \"orderDataType\": \"dom-text\" },\n\t\t * { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t * { \"orderDataType\": \"dom-select\" },\n\t\t * { \"orderDataType\": \"dom-checkbox\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t * @type string\n\t\t * @default null <i>Derived from the 'TH' value for this column in the\n\t\t * original HTML table.</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.title\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"title\": \"My column title\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t * @type string\n\t\t * @default null <i>Auto-detected from raw data</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.type\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"type\": \"html\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t * @type string\n\t\t * @default null <i>Automatic</i>\n\t\t *\n\t\t * @name DataTable.defaults.column.width\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"width\": \"20%\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t * @namespace\n\t * @todo Really should attach the settings object to individual instances so we\n\t * don't need to create new instances on each $().dataTable() call (if the\n\t * table already exists). It would also save passing oSettings around and\n\t * into every single function. However, this is a very significant\n\t * architecture change for DataTables and will almost certainly break\n\t * backwards compatibility with older installations. This is something that\n\t * will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t * @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all for DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t * @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t * @type int\n\t\t\t * @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t * @namespace\n\t\t * @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t * @type function\n\t\t\t * @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t * @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false,\n\t\n\t\t\t/**\n\t\t\t * Flag for if `getBoundingClientRect` is fully supported or not\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bBounding\": false,\n\t\n\t\t\t/**\n\t\t\t * Browser scrollbar width\n\t\t\t * @type integer\n\t\t\t * @default 0\n\t\t\t */\n\t\t\t\"barWidth\": 0\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t * <ul>\n\t\t * <li>'l' - Length changing</li>\n\t\t * <li>'f' - Filtering input</li>\n\t\t * <li>'t' - The table!</li>\n\t\t * <li>'i' - Information</li>\n\t\t * <li>'p' - Pagination</li>\n\t\t * <li>'r' - pRocessing</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Map of row ids to data indexes\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"aIds\": {},\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t * <li>Index 0 - column number</li>\n\t\t * <li>Index 1 - current sorting direction</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t * @type string\n\t\t * @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Search delay (in mS)\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t * <ul>\n\t\t * <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the JSON string to save that has been thus far created. Returns\n\t\t * a JSON string to be inserted into a json object\n\t\t * (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t * <li>string:sName - name of callback</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t * <ul>\n\t\t * <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the object stored. May return false to cancel state loading</li>\n\t\t * <li>string:sName - name of callback</li>\n\t\t * </ul>\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t * @type int\n\t\t * @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t * @type int\n\t\t * @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type int\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type boolean\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t * @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen = this._iDisplayLength,\n\t\t\t\tstart = this._iDisplayStart,\n\t\t\t\tcalc = start + len,\n\t\t\t\trecords = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oPlugins\": {},\n\t\n\t\t/**\n\t\t * Function used to get a row's id from the row's data\n\t\t * @type function\n\t\t * @default null\n\t\t */\n\t\t\"rowIdFn\": null,\n\t\n\t\t/**\n\t\t * Data location where to store a row's id\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"rowId\": null\n\t};\n\t\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t * @namespace\n\t * @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t * @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Buttons. For use with the Buttons extension for DataTables. This is\n\t\t * defined here so other extensions can define buttons regardless of load\n\t\t * order. It is _not_ used by DataTables core.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tbuttons: {},\n\t\n\t\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * DataTables build type (expanded by the download builder)\n\t\t *\n\t\t * @type string\n\t\t */\n\t\tbuilder: \"-source-\",\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert',\n\t\t * 'throw', 'none' or a function.\n\t\t *\n\t\t * @type string|function\n\t\t * @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t * instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t * return may also be void if your plug-in does not require to inject any\n\t\t * DOM elements into DataTables control (`dom`) - for example this might\n\t\t * be useful when developing a plug-in which allows table control via\n\t\t * keyboard entry\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * $.fn.dataTable.ext.features.push( {\n\t\t * \"fnInit\": function( oSettings ) {\n\t\t * return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t * },\n\t\t * \"cFeature\": \"T\"\n\t\t * } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t * original format that was passed in as the data source, or an array\n\t\t * from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t * can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t * (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @example\n\t\t * // The following example shows custom search being applied to the\n\t\t * // fourth column (i.e. the data[3] index) based on two input values\n\t\t * // from the end-user, matching the data in a certain range.\n\t\t * $.fn.dataTable.ext.search.push(\n\t\t * function( settings, data, dataIndex ) {\n\t\t * var min = document.getElementById('min').value * 1;\n\t\t * var max = document.getElementById('max').value * 1;\n\t\t * var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t * if ( min == \"\" && max == \"\" ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min == \"\" && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && \"\" == max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * return false;\n\t\t * }\n\t\t * );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Selector extensions\n\t\t *\n\t\t * The `selector` option can be used to extend the options available for the\n\t\t * selector modifier options (`selector-modifier` object data type) that\n\t\t * each of the three built in selector types offer (row, column and cell +\n\t\t * their plural counterparts). For example the Select extension uses this\n\t\t * mechanism to provide an option to select only rows, columns and cells\n\t\t * that have been marked as selected by the end user (`{selected: true}`),\n\t\t * which can be used in conjunction with the existing built in selector\n\t\t * options.\n\t\t *\n\t\t * Each property is an array to which functions can be pushed. The functions\n\t\t * take three attributes:\n\t\t *\n\t\t * * Settings object for the host table\n\t\t * * Options object (`selector-modifier` object type)\n\t\t * * Array of selected item indexes\n\t\t *\n\t\t * The return is an array of the resulting item indexes after the custom\n\t\t * selector has been applied.\n\t\t *\n\t\t * @type object\n\t\t */\n\t\tselector: {\n\t\t\tcell: [],\n\t\t\tcolumn: [],\n\t\t\trow: []\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t * @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t * @type boolean\n\t\t\t * @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t * containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t *\n\t\t * @example\n\t\t * // Show previous, next and current page buttons only\n\t\t * $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t * return [ 'previous', page, 'next' ];\n\t\t * };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * // Ordering using `input` node values\n\t\t * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col )\n\t\t * {\n\t\t * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t * return $('input', td).val();\n\t\t * } );\n\t\t * }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be analysed\n\t\t * 2. `{settings}` DataTables settings object. This can be used to\n\t\t * perform context specific type detection - for example detection\n\t\t * based on language settings such as using a comma for a decimal\n\t\t * place. Generally speaking the options from the settings will not\n\t\t * be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t * pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t * @type array\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Currency type detection plug-in:\n\t\t\t * $.fn.dataTable.ext.type.detect.push(\n\t\t\t * function ( data, settings ) {\n\t\t\t * // Check the numeric part\n\t\t\t * if ( ! data.substring(1).match(/[0-9]/) ) {\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t *\n\t\t\t * // Check prefixed by currency\n\t\t\t * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) {\n\t\t\t * return 'currency';\n\t\t\t * }\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t * );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t * return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t * }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data to compare to the second parameter\n\t\t * 2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t * than the second parameter, ===0 if the two parameters are equal and\n\t\t\t * >0 if the first parameter should be sorted height than the second\n\t\t\t * parameter.\n\t\t\t * \n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t * $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t * \"string-pre\": function(x) {\n\t\t\t * a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t * return parseFloat( a );\n\t\t\t * }\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t * $.extend( $.fn.dataTable.ext.order, {\n\t\t\t * \"string-case-asc\": function(x,y) {\n\t\t\t * return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t * },\n\t\t\t * \"string-case-desc\": function(x,y) {\n\t\t\t * return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t * }\n\t\t\t * } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatibility only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t * @type function\n\t\t * @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t * @type int\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t * @type object\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t * @type string\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes: _ext.type.detect,\n\t\tofnSearch: _ext.type.search,\n\t\toSort: _ext.type.order,\n\t\tafnSortData: _ext.order,\n\t\taoFeatures: _ext.feature,\n\t\toApi: _ext.internal,\n\t\toStdClasses: _ext.classes,\n\t\toPagination: _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_desc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_asc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-half+2, page+half-1 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tnumbers: function ( page, pages ) {\n\t\t\treturn [ _numbers(page, pages) ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\t\n\t\tfirst_last_numbers: function (page, pages) {\n\t \t\treturn ['first', _numbers(page, pages), 'last'];\n\t \t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\n\t\t// Number of number buttons (including ellipsis) to show. _Must be odd!_\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar aria = settings.oLanguage.oAria.paginate || {};\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button, tabIndex;\n\t\t\t\t\tvar disabledClass = classes.sPageButtonDisabled;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tbutton = buttons[i];\n\t\n\t\t\t\t\t\tif ( Array.isArray( button ) ) {\n\t\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = null;\n\t\t\t\t\t\t\tbtnClass = button;\n\t\t\t\t\t\t\ttabIndex = settings.iTabIndex;\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('<span class=\"ellipsis\">…</span>');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\n\t\t\t\t\t\t\t\t\tif ( page === 0 ) {\n\t\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\n\t\t\t\t\t\t\t\t\tif ( page === 0 ) {\n\t\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\n\t\t\t\t\t\t\t\t\tif ( pages === 0 || page === pages-1 ) {\n\t\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\n\t\t\t\t\t\t\t\t\tif ( pages === 0 || page === pages-1 ) {\n\t\t\t\t\t\t\t\t\t\ttabIndex = -1;\n\t\t\t\t\t\t\t\t\t\tbtnClass += ' ' + disabledClass;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = settings.fnFormatNumber( button + 1 );\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay !== null ) {\n\t\t\t\t\t\t\t\tnode = $('<a>', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': tabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\tvar activeEl;\n\t\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\n\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\tif ( activeEl !== undefined ) {\n\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 tries _very_ hard to make a string passed into `Date.parse()`\n\t\t\t// valid, so we need to use a regex to restrict date formats. Use a\n\t\t\t// plug-in for anything other than ISO8601 style strings\n\t\t\tif ( d && !(d instanceof Date) && ! _re_date.test(d) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t// \n\t// Note that additional search methods are added for the html numbers and\n\t// html formatted numbers by `_addNumericSort()` when we know what the decimal\n\t// place is\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( d !== 0 && (!d || d === '-') ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting and search. This is done\n\t// in a function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t// Add the ordering method\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\n\t\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\tvar ts = Date.parse( d );\n\t\t\treturn isNaN(ts) ? -Infinity : ts;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn; // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\tvar __htmlEscapeEntities = function ( d ) {\n\t\tif (Array.isArray(d)) {\n\t\t\td = d.join(',');\n\t\t}\n\t\n\t\treturn typeof d === 'string' ?\n\t\t\td\n\t\t\t\t.replace(/&/g, '&')\n\t\t\t\t.replace(/</g, '<')\n\t\t\t\t.replace(/>/g, '>')\n\t\t\t\t.replace(/\"/g, '"') :\n\t\t\td;\n\t};\n\t\n\t// Common logic for moment, luxon or a date action\n\tfunction __mld( dt, momentFn, luxonFn, dateFn, arg1 ) {\n\t\tif (window.moment) {\n\t\t\treturn dt[momentFn]( arg1 );\n\t\t}\n\t\telse if (window.luxon) {\n\t\t\treturn dt[luxonFn]( arg1 );\n\t\t}\n\t\t\n\t\treturn dateFn ? dt[dateFn]( arg1 ) : dt;\n\t}\n\t\n\t\n\tvar __mlWarning = false;\n\tfunction __mldObj (d, format, locale) {\n\t\tvar dt;\n\t\n\t\tif (window.moment) {\n\t\t\tdt = window.moment.utc( d, format, locale, true );\n\t\n\t\t\tif (! dt.isValid()) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\telse if (window.luxon) {\n\t\t\tdt = format\n\t\t\t\t? window.luxon.DateTime.fromFormat( d, format )\n\t\t\t\t: window.luxon.DateTime.fromISO( d );\n\t\n\t\t\tif (! dt.isValid) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\n\t\t\tdt.setLocale(locale);\n\t\t}\n\t\telse if (! format) {\n\t\t\t// No format given, must be ISO\n\t\t\tdt = new Date(d);\n\t\t}\n\t\telse {\n\t\t\tif (! __mlWarning) {\n\t\t\t\talert('DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17');\n\t\t\t}\n\t\n\t\t\t__mlWarning = true;\n\t\t}\n\t\n\t\treturn dt;\n\t}\n\t\n\t// Wrapper for date, datetime and time which all operate the same way with the exception of\n\t// the output string for auto locale support\n\tfunction __mlHelper (localeString) {\n\t\treturn function ( from, to, locale, def ) {\n\t\t\t// Luxon and Moment support\n\t\t\t// Argument shifting\n\t\t\tif ( arguments.length === 0 ) {\n\t\t\t\tlocale = 'en';\n\t\t\t\tto = null; // means toLocaleString\n\t\t\t\tfrom = null; // means iso8601\n\t\t\t}\n\t\t\telse if ( arguments.length === 1 ) {\n\t\t\t\tlocale = 'en';\n\t\t\t\tto = from;\n\t\t\t\tfrom = null;\n\t\t\t}\n\t\t\telse if ( arguments.length === 2 ) {\n\t\t\t\tlocale = to;\n\t\t\t\tto = from;\n\t\t\t\tfrom = null;\n\t\t\t}\n\t\n\t\t\tvar typeName = 'datetime-' + to;\n\t\n\t\t\t// Add type detection and sorting specific to this date format - we need to be able to identify\n\t\t\t// date type columns as such, rather than as numbers in extensions. Hence the need for this.\n\t\t\tif (! DataTable.ext.type.order[typeName]) {\n\t\t\t\t// The renderer will give the value to type detect as the type!\n\t\t\t\tDataTable.ext.type.detect.unshift(function (d) {\n\t\t\t\t\treturn d === typeName ? typeName : false;\n\t\t\t\t});\n\t\n\t\t\t\t// The renderer gives us Moment, Luxon or Date obects for the sorting, all of which have a\n\t\t\t\t// `valueOf` which gives milliseconds epoch\n\t\t\t\tDataTable.ext.type.order[typeName + '-asc'] = function (a, b) {\n\t\t\t\t\tvar x = a.valueOf();\n\t\t\t\t\tvar y = b.valueOf();\n\t\n\t\t\t\t\treturn x === y\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: x < y\n\t\t\t\t\t\t\t? -1\n\t\t\t\t\t\t\t: 1;\n\t\t\t\t}\n\t\n\t\t\t\tDataTable.ext.type.order[typeName + '-desc'] = function (a, b) {\n\t\t\t\t\tvar x = a.valueOf();\n\t\t\t\t\tvar y = b.valueOf();\n\t\n\t\t\t\t\treturn x === y\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: x > y\n\t\t\t\t\t\t\t? -1\n\t\t\t\t\t\t\t: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\n\t\t\treturn function ( d, type ) {\n\t\t\t\t// Allow for a default value\n\t\t\t\tif (d === null || d === undefined) {\n\t\t\t\t\tif (def === '--now') {\n\t\t\t\t\t\t// We treat everything as UTC further down, so no changes are\n\t\t\t\t\t\t// made, as such need to get the local date / time as if it were\n\t\t\t\t\t\t// UTC\n\t\t\t\t\t\tvar local = new Date();\n\t\t\t\t\t\td = new Date( Date.UTC(\n\t\t\t\t\t\t\tlocal.getFullYear(), local.getMonth(), local.getDate(),\n\t\t\t\t\t\t\tlocal.getHours(), local.getMinutes(), local.getSeconds()\n\t\t\t\t\t\t) );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\td = '';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\tif (type === 'type') {\n\t\t\t\t\t// Typing uses the type name for fast matching\n\t\t\t\t\treturn typeName;\n\t\t\t\t}\n\t\n\t\t\t\tif (d === '') {\n\t\t\t\t\treturn type !== 'sort'\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: __mldObj('0000-01-01 00:00:00', null, locale);\n\t\t\t\t}\n\t\n\t\t\t\t// Shortcut. If `from` and `to` are the same, we are using the renderer to\n\t\t\t\t// format for ordering, not display - its already in the display format.\n\t\t\t\tif ( to !== null && from === to && type !== 'sort' && type !== 'type' && ! (d instanceof Date) ) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\t\n\t\t\t\tvar dt = __mldObj(d, from, locale);\n\t\n\t\t\t\tif (dt === null) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\t\n\t\t\t\tif (type === 'sort') {\n\t\t\t\t\treturn dt;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tvar formatted = to === null\n\t\t\t\t\t? __mld(dt, 'toDate', 'toJSDate', '')[localeString]()\n\t\t\t\t\t: __mld(dt, 'format', 'toFormat', 'toISOString', to);\n\t\n\t\t\t\t// XSS protection\n\t\t\t\treturn type === 'display' ?\n\t\t\t\t\t__htmlEscapeEntities( formatted ) :\n\t\t\t\t\tformatted;\n\t\t\t};\n\t\t}\n\t}\n\t\n\t// Based on locale, determine standard number formatting\n\t// Fallback for legacy browsers is US English\n\tvar __thousands = ',';\n\tvar __decimal = '.';\n\t\n\tif (Intl) {\n\t\ttry {\n\t\t\tvar num = new Intl.NumberFormat().formatToParts(100000.1);\n\t\t\n\t\t\tfor (var i=0 ; i<num.length ; i++) {\n\t\t\t\tif (num[i].type === 'group') {\n\t\t\t\t\t__thousands = num[i].value;\n\t\t\t\t}\n\t\t\t\telse if (num[i].type === 'decimal') {\n\t\t\t\t\t__decimal = num[i].value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (e) {\n\t\t\t// noop\n\t\t}\n\t}\n\t\n\t// Formatted date time detection - use by declaring the formats you are going to use\n\tDataTable.datetime = function ( format, locale ) {\n\t\tvar typeName = 'datetime-detect-' + format;\n\t\n\t\tif (! locale) {\n\t\t\tlocale = 'en';\n\t\t}\n\t\n\t\tif (! DataTable.ext.type.order[typeName]) {\n\t\t\tDataTable.ext.type.detect.unshift(function (d) {\n\t\t\t\tvar dt = __mldObj(d, format, locale);\n\t\t\t\treturn d === '' || dt ? typeName : false;\n\t\t\t});\n\t\n\t\t\tDataTable.ext.type.order[typeName + '-pre'] = function (d) {\n\t\t\t\treturn __mldObj(d, format, locale) || 0;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t * display, retaining the original unformatted data for sorting and filtering.\n\t * It takes 5 parameters:\n\t * * `string` - Thousands grouping separator\n\t * * `string` - Decimal point indicator\n\t * * `integer` - Number of decimal points to show\n\t * * `string` (optional) - Prefix.\n\t * * `string` (optional) - Postfix (/suffix).\n\t * * `text` - Escape HTML to help prevent XSS attacks. It has no optional\n\t * parameters.\n\t *\n\t * @example\n\t * // Column definition using the number renderer\n\t * {\n\t * data: \"salary\",\n\t * render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t * }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tdate: __mlHelper('toLocaleDateString'),\n\t\tdatetime: __mlHelper('toLocaleString'),\n\t\ttime: __mlHelper('toLocaleTimeString'),\n\t\tnumber: function ( thousands, decimal, precision, prefix, postfix ) {\n\t\t\t// Auto locale detection\n\t\t\tif (thousands === null || thousands === undefined) {\n\t\t\t\tthousands = __thousands;\n\t\t\t}\n\t\n\t\t\tif (decimal === null || decimal === undefined) {\n\t\t\t\tdecimal = __decimal;\n\t\t\t}\n\t\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tif ( typeof d !== 'number' && typeof d !== 'string' ) {\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (d === '' || d === null) {\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\tvar flo = parseFloat( d );\n\t\n\t\t\t\t\t// If NaN then there isn't much formatting that we can do - just\n\t\t\t\t\t// return immediately, escaping any HTML (this was supposed to\n\t\t\t\t\t// be a number after all)\n\t\t\t\t\tif ( isNaN( flo ) ) {\n\t\t\t\t\t\treturn __htmlEscapeEntities( d );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tflo = flo.toFixed( precision );\n\t\t\t\t\td = Math.abs( flo );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\t// If zero, then can't have a negative prefix\n\t\t\t\t\tif (intPart === 0 && parseFloat(floatPart) === 0) {\n\t\t\t\t\t\tnegative = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart +\n\t\t\t\t\t\t(postfix||'');\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\ttext: function () {\n\t\t\treturn {\n\t\t\t\tdisplay: __htmlEscapeEntities,\n\t\t\t\tfilter: __htmlEscapeEntities\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t * @param {string} fn API function name\n\t * @returns {function} wrapped function\n\t * @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t * @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidate: _fnInvalidate,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnImplementState: _fnImplementState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnExtend: _fnExtend,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t // in 1.10, so this dead-end function is\n\t\t // added to prevent errors\n\t} );\n\t\n\t\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\t\n\t// Provide access to the host jQuery object (circular reference)\n\tDataTable.$ = $;\n\t\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\t\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\t\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\t\n\treturn DataTable;\n}));\n","/*! DataTables Bootstrap 5 integration\n * 2020 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * DataTables integration for Bootstrap 4. This requires Bootstrap 5 and\n * DataTables 1.10 or newer.\n *\n * This file sets the defaults and adds options to DataTables to style its\n * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap\n * for further information.\n */\n(function( factory ){\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery', 'datatables.net'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ || ! $.fn.dataTable ) {\n\t\t\t\t// Require DataTables, which attaches to jQuery, including\n\t\t\t\t// jQuery if needed and have a $ property so we can access the\n\t\t\t\t// jQuery object that is used\n\t\t\t\t$ = require('datatables.net')(root, $).$;\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}(function( $, window, document, undefined ) {\n'use strict';\nvar DataTable = $.fn.dataTable;\n\n\n/* Set the defaults for DataTables initialisation */\n$.extend( true, DataTable.defaults, {\n\tdom:\n\t\t\"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>\" +\n\t\t\"<'row'<'col-sm-12'tr>>\" +\n\t\t\"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>\",\n\trenderer: 'bootstrap'\n} );\n\n\n/* Default class modification */\n$.extend( DataTable.ext.classes, {\n\tsWrapper: \"dataTables_wrapper dt-bootstrap5\",\n\tsFilterInput: \"form-control form-control-sm\",\n\tsLengthSelect: \"form-select form-select-sm\",\n\tsProcessing: \"dataTables_processing card\",\n\tsPageButton: \"paginate_button page-item\"\n} );\n\n\n/* Bootstrap paging button renderer */\nDataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {\n\tvar api = new DataTable.Api( settings );\n\tvar classes = settings.oClasses;\n\tvar lang = settings.oLanguage.oPaginate;\n\tvar aria = settings.oLanguage.oAria.paginate || {};\n\tvar btnDisplay, btnClass, counter=0;\n\n\tvar attach = function( container, buttons ) {\n\t\tvar i, ien, node, button;\n\t\tvar clickHandler = function ( e ) {\n\t\t\te.preventDefault();\n\t\t\tif ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {\n\t\t\t\tapi.page( e.data.action ).draw( 'page' );\n\t\t\t}\n\t\t};\n\n\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\tbutton = buttons[i];\n\n\t\t\tif ( Array.isArray( button ) ) {\n\t\t\t\tattach( container, button );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtnDisplay = '';\n\t\t\t\tbtnClass = '';\n\n\t\t\t\tswitch ( button ) {\n\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\tbtnDisplay = '…';\n\t\t\t\t\t\tbtnClass = 'disabled';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'first':\n\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'next':\n\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'last':\n\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t'' : ' disabled');\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t'active' : '';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\tnode = $('<li>', {\n\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append( $('<a>', {\n\t\t\t\t\t\t\t\t'href': '#',\n\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t'class': 'page-link'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.appendTo( container );\n\n\t\t\t\t\tsettings.oApi._fnBindAction(\n\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t);\n\n\t\t\t\t\tcounter++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t// inside an iframe or frame. \n\tvar activeEl;\n\n\ttry {\n\t\t// Because this approach is destroying and recreating the paging\n\t\t// elements, focus is lost on the select button which is bad for\n\t\t// accessibility. So we want to restore focus once the draw has\n\t\t// completed\n\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t}\n\tcatch (e) {}\n\n\tattach(\n\t\t$(host).empty().html('<ul class=\"pagination\"/>').children('ul'),\n\t\tbuttons\n\t);\n\n\tif ( activeEl !== undefined ) {\n\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');\n\t}\n};\n\n\nreturn DataTable;\n}));\n","import $ from \"jquery\";\r\n// @ts-ignore\r\nimport DT from \"datatables.net/js/jquery.dataTables\";\r\n// @ts-ignore\r\nimport DTBS from \"datatables.net-bs5/js/dataTables.bootstrap5\";\r\nimport \"datatables.net-bs5/css/dataTables.bootstrap5.css\";\r\n\r\n(DT as any)(window, $);\r\n(DTBS as any)(window, $);\r\n\r\n$.extend(true, ($.fn as any).dataTable.defaults, {\r\n language: {\r\n aria: {\r\n sortAscending: \"Activar para ordenar la columna de manera ascendente\",\r\n sortDescending: \"Activar para ordenar la columna de manera descendente\"\r\n },\r\n autoFill: {\r\n cancel: \"Cancelar\",\r\n fill: \"Rellene todas las celdas con <i>%d</i>\",\r\n fillHorizontal: \"Rellenar celdas horizontalmente\",\r\n fillVertical: \"Rellenar celdas verticalmente\"\r\n },\r\n buttons: {\r\n collection: \"Colección\",\r\n colvis: \"Visibilidad\",\r\n colvisRestore: \"Restaurar visibilidad\",\r\n copy: \"Copiar\",\r\n copyKeys:\r\n \"Presione ctrl o \\u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br /> <br /> Para cancelar, haga clic en este mensaje o presione escape.\",\r\n copySuccess: {\r\n \"1\": \"Copiada 1 fila al portapapeles\",\r\n _: \"Copiadas %d fila al portapapeles\"\r\n },\r\n copyTitle: \"Copiar al portapapeles\",\r\n csv: \"CSV\",\r\n excel: \"Excel\",\r\n pageLength: {\r\n \"-1\": \"Mostrar todas las filas\",\r\n _: \"Mostrar %d filas\"\r\n },\r\n pdf: \"PDF\",\r\n print: \"Imprimir\"\r\n },\r\n infoEmpty: \"Mostrando registros del 0 al 0 de un total de 0 registros\",\r\n infoFiltered: \"(filtrado de un total de _MAX_ registros)\",\r\n infoThousands: \",\",\r\n lengthMenu: \"Mostrar _MENU_ registros\",\r\n loadingRecords: \"Cargando...\",\r\n paginate: {\r\n first: \"Primero\",\r\n last: \"Último\",\r\n next: \"Siguiente\",\r\n previous: \"Anterior\"\r\n },\r\n processing: \"Procesando...\",\r\n search: \"Buscar:\",\r\n searchBuilder: {\r\n add: \"Añadir condición\",\r\n button: {\r\n \"0\": \"Constructor de búsqueda\",\r\n _: \"Constructor de búsqueda (%d)\"\r\n },\r\n clearAll: \"Borrar todo\",\r\n condition: \"Condición\",\r\n deleteTitle: \"Eliminar regla de filtrado\",\r\n leftTitle: \"Criterios anulados\",\r\n logicAnd: \"Y\",\r\n logicOr: \"O\",\r\n rightTitle: \"Criterios de sangrÃa\",\r\n title: {\r\n \"0\": \"Constructor de búsqueda\",\r\n _: \"Constructor de búsqueda (%d)\"\r\n },\r\n value: \"Valor\",\r\n conditions: {\r\n date: {\r\n after: \"Después\",\r\n before: \"Antes\",\r\n between: \"Entre\",\r\n empty: \"VacÃo\",\r\n equals: \"Igual a\",\r\n not: \"Diferente de\",\r\n notBetween: \"No entre\",\r\n notEmpty: \"No vacÃo\"\r\n },\r\n number: {\r\n between: \"Entre\",\r\n empty: \"VacÃo\",\r\n equals: \"Igual a\",\r\n gt: \"Mayor a\",\r\n gte: \"Mayor o igual a\",\r\n lt: \"Menor que\",\r\n lte: \"Menor o igual a\",\r\n not: \"Diferente de\",\r\n notBetween: \"No entre\",\r\n notEmpty: \"No vacÃo\"\r\n },\r\n string: {\r\n contains: \"Contiene\",\r\n empty: \"VacÃo\",\r\n endsWith: \"Termina con\",\r\n equals: \"Igual a\",\r\n not: \"Diferente de\",\r\n startsWith: \"Inicia con\",\r\n notEmpty: \"No vacÃo\"\r\n },\r\n array: {\r\n equals: \"Igual a\",\r\n empty: \"VacÃo\",\r\n contains: \"Contiene\",\r\n not: \"Diferente\",\r\n notEmpty: \"No vacÃo\",\r\n without: \"Sin\"\r\n }\r\n },\r\n data: \"Datos\"\r\n },\r\n searchPanes: {\r\n clearMessage: \"Borrar todo\",\r\n collapse: {\r\n \"0\": \"Paneles de búsqueda\",\r\n _: \"Paneles de búsqueda (%d)\"\r\n },\r\n count: \"{total}\",\r\n emptyPanes: \"Sin paneles de búsqueda\",\r\n loadMessage: \"Cargando paneles de búsqueda\",\r\n title: \"Filtros Activos - %d\",\r\n countFiltered: \"{shown} ({total})\"\r\n },\r\n select: {\r\n cells: {\r\n \"1\": \"1 celda seleccionada\",\r\n _: \"$d celdas seleccionadas\"\r\n },\r\n columns: {\r\n \"1\": \"1 columna seleccionada\",\r\n _: \"%d columnas seleccionadas\"\r\n }\r\n },\r\n thousands: \",\",\r\n datetime: {\r\n previous: \"Anterior\",\r\n hours: \"Horas\",\r\n minutes: \"Minutos\",\r\n seconds: \"Segundos\",\r\n unknown: \"-\",\r\n amPm: [\"am\", \"pm\"],\r\n next: \"Siguiente\",\r\n months: {\r\n \"0\": \"Enero\",\r\n \"1\": \"Febrero\",\r\n \"10\": \"Noviembre\",\r\n \"11\": \"Diciembre\",\r\n \"2\": \"Marzo\",\r\n \"3\": \"Abril\",\r\n \"4\": \"Mayo\",\r\n \"5\": \"Junio\",\r\n \"6\": \"Julio\",\r\n \"7\": \"Agosto\",\r\n \"8\": \"Septiembre\",\r\n \"9\": \"Octubre\"\r\n },\r\n weekdays: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"]\r\n },\r\n editor: {\r\n close: \"Cerrar\",\r\n create: {\r\n button: \"Nuevo\",\r\n title: \"Crear Nuevo Registro\",\r\n submit: \"Crear\"\r\n },\r\n edit: {\r\n button: \"Editar\",\r\n title: \"Editar Registro\",\r\n submit: \"Actualizar\"\r\n },\r\n remove: {\r\n button: \"Eliminar\",\r\n title: \"Eliminar Registro\",\r\n submit: \"Eliminar\",\r\n confirm: {\r\n _: \"¿Está seguro que desea eliminar %d filas?\",\r\n \"1\": \"¿Está seguro que desea eliminar 1 fila?\"\r\n }\r\n },\r\n multi: {\r\n title: \"Múltiples Valores\",\r\n restore: \"Deshacer Cambios\",\r\n noMulti: \"Este registro puede ser editado individualmente, pero no como parte de un grupo.\",\r\n info: \"Los elementos seleccionados contienen diferentes valores para este registro. Para editar y establecer todos los elementos de este registro con el mismo valor, haga click o toque aquÃ, de lo contrario conservarán sus valores individuales.\"\r\n },\r\n error: {\r\n system: 'Ha ocurrido un error en el sistema (<a target=\"\\\\\" rel=\"\\\\ nofollow\" href=\"\\\\\"> Más información</a>).'\r\n }\r\n },\r\n decimal: \".\",\r\n emptyTable: \"No hay datos disponibles en la tabla\",\r\n info: \"Mostrando de _START_ al _END_ de _TOTAL_ registros\",\r\n zeroRecords: \"No se encontraron coincidencias\"\r\n }\r\n});\r\n","<template lang=\"pug\">\r\n.container.mb-3: .row\r\n .col-8\r\n .d-inline-block(\r\n style=\"background: #492fe5; color: #ffffff; padding: 15px 26px; border-top-left-radius: 11px; border-top-right-radius: 11px; margin-left: 26px\"\r\n ): b.text.secondary Adjudicaciones\r\n .bg-white.shadow(style=\"border-radius: 8px; padding: 0\")\r\n .card.mb-2: .card-body(style=\"background: #492fe5; padding: 16px 26px; border-bottom: #95a7d6 1px solid\")\r\n .row\r\n .col-6\r\n input.form-control.mt-4(:form=\"componentId + 'form'\" type=\"search\" v-model=\"filtroContrato\" placeholder=\"Busqueda por Nombre\")\r\n .col-2\r\n .col-4\r\n select.form-select.mt-4(:form=\"componentId + 'form'\" v-model=\"Mes\")\r\n option(disabled selected) Seleccione Mes Adjudicación\r\n option(v-for=\"mes in meses\" :value=\"mes\") {{ mes.texto }}\r\n .p-2: table.w-100.bg-white.table(ref=\"tablaDom\")\r\n thead: tr\r\n td Grupo\r\n td Cliente\r\n td Contrato\r\n td Adjudicado\r\n td Adjudicación\r\n td Cuotas\r\n tbody\r\n .col-4\r\n .row\r\n .col-12\r\n .mt-4.card: .card-body\r\n .row\r\n .col-12\r\n .row: .col.text-center.fw-bold.fs-5(style=\"color: #2f2d74\") Publicación del Mes\r\n .col-12\r\n .centrador: a(href=\"https://www.reforma.com/libre/online07/aplicacionei/Pagina.html?seccion=adjudicadoshir&fecha=20211024\" target=\"_blank\")\r\n img.imagen(src=\"../assets/publicidadmes.svg\")\r\n .col-12\r\n .mt-4.card: .card-body\r\n .row\r\n .col-12\r\n .row: .col.text-center.fw-bold.fs-5(style=\"color: #2f2d74\") Calendario de Eventos\r\n .col-12\r\n .row\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | ENERO\r\n .calendar_day\r\n | 21\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | FEBRERO\r\n .calendar_day\r\n | 18\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | MARZO\r\n .calendar_day\r\n | 18\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | ABRIL\r\n .calendar_day\r\n | 15\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | MAYO\r\n .calendar_day\r\n | 20\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | JUNIO\r\n .calendar_day\r\n | 17\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | JULIO\r\n .calendar_day\r\n | 15\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | AGOSTO\r\n .calendar_day\r\n | 19\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | SEPTIEMBRE\r\n .calendar_day\r\n | 19\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | OCTUBRE\r\n .calendar_day\r\n | 21\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | NOVIEMBRE\r\n .calendar_day\r\n | 18\r\n .col-4\r\n .calendar_date\r\n .calendar_month\r\n | DICIEMBRE\r\n .calendar_day\r\n | 16\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport { watch, ref, onMounted, nextTick } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport $ from \"jquery\";\r\nimport \"@/datatables\";\r\nimport * as luxon from \"luxon\";\r\n\r\nconst componentId = utilidades.generarId();\r\nconst filtroContrato = ref(\"\");\r\nconst Mes = ref({ anio: new Date().getFullYear(), mes: new Date().getMonth() + 1 });\r\nconst meses = [] as { mes: number; anio: number; texto: string }[];\r\nconst tablaDom = ref(null as HTMLTableElement | null);\r\nlet tabla: DataTables.Api;\r\n\r\nwatch(filtroContrato, (val) => {\r\n filtroContrato.value = val.toUpperCase();\r\n tabla.search(val).draw();\r\n});\r\n\r\nasync function obtenerAdjudicaciones() {\r\n let data = await api.Cliente.Cliente.AdjudicacionApi.ObtenerAdjudicacionesMes(Mes.value.anio, Mes.value.mes);\r\n tabla.clear();\r\n tabla.rows.add(data.data);\r\n tabla.draw();\r\n tabla.columns.adjust().draw();\r\n}\r\n\r\nfor (let i = 0; i < 13; i++) {\r\n let fecha = luxon.DateTime.now().minus({ months: i });\r\n meses.push({ mes: fecha.month, anio: fecha.year, texto: fecha.toLocaleString({ month: \"long\", year: \"numeric\" }) });\r\n}\r\n\r\nMes.value = meses[0];\r\n\r\nwatch(Mes, async () => {\r\n filtroContrato.value = \"\";\r\n await obtenerAdjudicaciones();\r\n});\r\n\r\nonMounted(async () => {\r\n await nextTick();\r\n tabla = $(tablaDom.value!).DataTable({\r\n columns: [\r\n { data: \"numeroGrupo\" },\r\n { data: \"nombreCompletoCliente\" },\r\n { data: \"numeroCompleto\" },\r\n { data: \"montoContratado\", render: (data2: number) => filtros.filtroDivisa(data2), className: \"text-end\" },\r\n { data: \"tipoAdjudicacion\", render: (data2: string) => data2.replace(/_/g, \" \") },\r\n { data: \"numeroCuotaPagadaIngresoListaEspera\" }\r\n ],\r\n dom: \"lrtip\"\r\n });\r\n await obtenerAdjudicaciones();\r\n});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.calendar_date {\r\n width: 74px;\r\n height: 74px;\r\n box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);\r\n}\r\n.calendar_month {\r\n width: 74px;\r\n height: 24px;\r\n font-family: Poppins, Arial, Helvetica, sans-serif;\r\n background-color: #ffa000;\r\n color: white;\r\n text-align: center;\r\n font-weight: bold;\r\n font-size: 16px;\r\n}\r\n.calendar_day {\r\n font-family: Poppins, Arial, Helvetica, sans-serif;\r\n background-color: #eef3f6;\r\n color: #354052;\r\n text-align: center;\r\n font-size: 30px;\r\n font-weight: bold;\r\n height: 50px;\r\n}\r\n.centrador {\r\n position: relative;\r\n width: 400px;\r\n height: 400px;\r\n}\r\n.imagen {\r\n position: absolute;\r\n width: 300px;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n margin: auto;\r\n}\r\n.header {\r\n background: url(../assets/Header.jpg);\r\n height: 107px;\r\n width: 100%;\r\n background-repeat: no-repeat;\r\n margin-bottom: 27px;\r\n}\r\n\r\ndiv .pestania:not(:last-child) {\r\n margin-right: 12px;\r\n}\r\n\r\n.pestania {\r\n font-weight: bold;\r\n color: #374066;\r\n padding: 9px 30px;\r\n border-radius: 90px;\r\n\r\n > img {\r\n margin-left: 8px;\r\n }\r\n}\r\n\r\n.contenedor-Documentos {\r\n border: 2px dotted #bdbdbd;\r\n margin-top: 1rem;\r\n margin-left: 0.1rem;\r\n width: 100%;\r\n}\r\n.area-drag {\r\n background-color: #f8f8f8;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n padding: 1rem;\r\n}\r\n.area-drag .icon {\r\n font-size: 2.5rem;\r\n color: #eb8113;\r\n}\r\n.area-lista-archivos {\r\n align-items: center;\r\n padding-top: 1rem;\r\n}\r\n\r\n.area-lista-archivos p {\r\n color: #eb8113;\r\n opacity: 0.7;\r\n}\r\n\r\n.textoDrag {\r\n color: #828282;\r\n}\r\n.buscarDrag {\r\n color: #eb8113;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n.archivoSubido {\r\n list-style: none;\r\n color: #eb8113;\r\n font-weight: bold;\r\n}\r\n.iconoArchivo {\r\n padding: 0.3rem;\r\n color: rgb(201, 67, 67);\r\n font-size: 14px;\r\n}\r\n.iconoEliminarArchivo {\r\n color: rgba(95, 95, 95, 0.699);\r\n margin-left: 2.2rem;\r\n font-size: 12px;\r\n cursor: pointer;\r\n}\r\n.pointer {\r\n cursor: pointer;\r\n}\r\n.textHir1 {\r\n color: #eb8113;\r\n font-weight: bold;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"vue-circular-progress\">\r\n <div class=\"circle\">\r\n <svg :width=\"circleSize\" :height=\"circleSize\" class=\"circle__svg\">\r\n <circle\r\n :cx=\"centralP\"\r\n :cy=\"centralP\"\r\n :r=\"radius\"\r\n :style=\"{ 'stroke-width': strokeWidth, stroke: strokeColor }\"\r\n class=\"circle__progress circle__progress--path\"\r\n ></circle>\r\n <circle\r\n :cx=\"centralP\"\r\n :cy=\"centralP\"\r\n :r=\"radius\"\r\n :style=\"fileStyl\"\r\n class=\"circle__progress circle__progress--fill\"\r\n ></circle>\r\n </svg>\r\n\r\n <div class=\"percent\">\r\n <slot>\r\n <span class=\"percent__int\">{{ int }}</span>\r\n <span class=\"dot\">.</span>\r\n <span class=\"percent__dec\">{{ dec }}</span>\r\n <span class=\"percent_sign\">%</span>\r\n </slot>\r\n </div>\r\n </div>\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: \"easy-circular-progress\",\r\n props: {\r\n strokeWidth: {\r\n type: Number,\r\n default: 4\r\n },\r\n radius: {\r\n type: Number,\r\n default: 38\r\n },\r\n transitionDuration: {\r\n type: Number,\r\n default: 1000\r\n },\r\n strokeColor: {\r\n type: String,\r\n default: \"#aaff00\"\r\n },\r\n value: {\r\n validator: function (value) {\r\n // should be a number and less or equal than 100\r\n return !Number.isNaN(Number(value)) && Number(value) <= 100;\r\n },\r\n default: \"0.0\"\r\n }\r\n },\r\n data() {\r\n return {\r\n offset: \"\",\r\n int: 0,\r\n dec: \"00\"\r\n };\r\n },\r\n computed: {\r\n circumference() {\r\n return this.radius * Math.PI * 2;\r\n },\r\n fileStyl() {\r\n return {\r\n strokeDashoffset: this.offset,\r\n \"--initialStroke\": this.circumference,\r\n \"--transitionDuration\": `${this.transitionDuration}ms`,\r\n \"stroke-width\": this.strokeWidth,\r\n stroke: this.strokeColor\r\n };\r\n },\r\n circleSize() {\r\n return (this.radius + this.strokeWidth) * 2;\r\n },\r\n centralP() {\r\n return this.circleSize / 2;\r\n }\r\n },\r\n methods: {\r\n increaseNumber(number, className) {\r\n if (number == 0) {\r\n return;\r\n }\r\n const innerNum = parseInt(this.findClosestNumber(this.transitionDuration / 10, number));\r\n let interval = this.transitionDuration / innerNum;\r\n\r\n let counter = 0;\r\n const handlerName = `${className}Interval`;\r\n this[handlerName] = setInterval(() => {\r\n const bitDiff = number.toString().length - innerNum.toString().length;\r\n if (bitDiff == 0) {\r\n this[className] = counter;\r\n } else {\r\n this[className] = counter * 10 * bitDiff;\r\n }\r\n if (counter === innerNum) {\r\n // back to origin precision\r\n this[className] = number;\r\n window.clearInterval(this[handlerName]);\r\n }\r\n counter++;\r\n }, interval);\r\n },\r\n findClosestNumber(bound, value) {\r\n if (value <= bound) {\r\n return value;\r\n }\r\n return this.findClosestNumber(bound, value / 10);\r\n },\r\n countNumber(v) {\r\n this.offset = \"\";\r\n\r\n this.initTimeoutHandler = setTimeout(() => {\r\n this.offset = (this.circumference * (100 - v)) / 100;\r\n }, 100);\r\n if (this.$slots.default) return;\r\n let [int, dec] = v.toString().split(\".\");\r\n\r\n // fallback for NaN\r\n [int, dec] = [Number(int), Number(dec)];\r\n this.increaseNumber(int, \"int\");\r\n this.increaseNumber(Number.isNaN(dec) ? 0 : dec, \"dec\");\r\n },\r\n clearHandlers() {\r\n if (this.initTimeoutHandler) {\r\n clearTimeout(this.initTimeoutHandler);\r\n }\r\n if (this.intInterval) {\r\n clearInterval(this.intInterval);\r\n }\r\n if (this.decInterval) {\r\n clearInterval(this.decInterval);\r\n }\r\n }\r\n },\r\n watch: {\r\n value: {\r\n handler: function (v) {\r\n const n = Number(v);\r\n if (Number.isNaN(n) || n == 0) {\r\n return;\r\n }\r\n this.clearHandlers();\r\n this.countNumber(v);\r\n },\r\n immediate: true\r\n }\r\n },\r\n beforeUnmount() {\r\n this.clearHandlers();\r\n }\r\n};\r\n</script>\r\n<style lang=\"scss\">\r\n@import \"@/sass/easy-circular-progress\";\r\n</style>\r\n","export default \"__VITE_ASSET__653ec68c__\"","<template lang=\"pug\">\r\nmixin contenidoTablaDocumentos(titulo, arregloDocumentos, entidad, os)\r\n thead\r\n tr: td.fw-bold.fs-5(colspan=\"3\")= titulo\r\n tr\r\n td.fw-bold Documento\r\n td.fw-bold.text-center Observaciones\r\n td.fw-bold.text-center Acciones\r\n td.fw-bold.text-center Estatus\r\n tbody: tr(v-for=`doc in ` + arregloDocumentos)\r\n td(style=\"width: 70%\")\r\n a(\r\n href=\"#\"\r\n data-bs-toggle=\"modal\"\r\n :data-bs-target=\"'#' + componentId + 'modalAyuda'\"\r\n v-on:click=\"mostrarModalAyuda(doc.documentoTramiteTitulacion.nombre, doc)\"\r\n )\r\n img(src=\"../../assets/Interrogacion.svg\")\r\n span.text-capitalize(style=\"margin-left: 10px\") {{ doc.documentoTramiteTitulacion.nombre }}\r\n //-td.text-center.a(data-bs-toggle='modal' data-bs-target='#documentosModal' v-on:click=\"pasarTitulo(doc.documentoTramiteTitulacion.nombre, doc.estudioSocioeconomicoDocumentoId,0)\" class=\"pointer\"): i(\r\n :class=\"doc.guardado ? 'fa fa-eye' : 'fa fa-upload'\"\r\n )\r\n td.text-center(:style=\"!doc.guardado ? 'color: #94A3B0' : ''\") {{ doc.comentario }}\r\n td.text-center\r\n a(\r\n href=\"#\"\r\n v-if=\"doc.estatus == null || doc.estatus == 2 || doc.estatus == 0\"\r\n @click.prevent=`seleccionarArchivo(doc, '` + entidad + `'` + (os ? `, i + 1` : ``) + `)`\r\n title=\"Cargar archivo\"\r\n ): em.fas.fa-upload\r\n a(target=\"_blank\" v-if=\"doc.archivo\" :href=`obtenerUrlVerArchivo(doc, '` + entidad + `'` + (os ? `, i + 1` : ``) + `)` title=\"Ver archivo\"): em.far.fa-eye\r\n td.text-center(v-html=\"obtenerEstadoDocumento(doc.estatus)\" :class=\"obtenerClasesEstadoDocumento(doc.estatus)\")\r\n\r\nmixin tablaDocumentos(titulo, arregloDocumentos, entidad, vFor)\r\n if vFor\r\n template(v-for=`` + vFor): table.w-100.bg-white.table(v-if=arregloDocumentos + `.length`)\r\n +contenidoTablaDocumentos(titulo, arregloDocumentos, entidad, true)\r\n else\r\n table.w-100.bg-white.table(v-if=arregloDocumentos + `.length`)\r\n +contenidoTablaDocumentos(titulo, arregloDocumentos, entidad)\r\n\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Cliente\", \"props.cliente.documentos\", \"CLIENTE\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Cónyuge\", \"props.cliente.documentosConyuge\", \"CONYUGE\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Vendedor\", \"props.cliente.documentosVendedor\", \"VENDEDOR\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Cónyuge del Vendedor\", \"props.cliente.documentosConyugeVendedor\", \"CONYUGE_VENDEDOR\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Obligado Solidario {{ i + 1 }}\", \"docs\", \"OBLIGADO_SOLIDARIO\", \"(docs, i) in props.cliente.documentosOS\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Cotitular {{ i + 1 }}\", \"docs\", \"COTITULAR\", \"(docs, i) in props.cliente.documentosCotitular\")\r\n+tablaDocumentos(\"Checklist de Documentos Requeridos del Garante Hipotecario\", \"props.cliente.documentosGaranteHipotecario\", \"GARANTE_HIPOTECARIO\")\r\n\r\n.modal.fade(tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" :id=\"componentId + 'modalAyuda'\")\r\n .modal-dialog.modal-lg\r\n .modal-content\r\n .modal-header\r\n h5.modal-title\r\n img(src=\"../../assets/Interrogacion.svg\")\r\n span Ayuda de Documento\r\n span.textHir1 {{ modalAyuda.titulo }} \r\n span de Checklist\r\n button.btn-close(type=\"button\" data-bs-dismiss=\"modal\" aria-label=\"Close\")\r\n .modal-body\r\n div(v-if=\"modalAyuda.documento.value.especificacion\")\r\n .fw-bold.fs-6 Especificaciones\r\n span {{ modalAyuda.documento.value.especificacion }}\r\n br\r\n div(v-if=\"modalAyuda.documento.value.descripcion\")\r\n .fw-bold.fs-6 Descripción\r\n span {{ modalAyuda.documento.value.descripcion }}\r\n br\r\n div(v-if=\"modalAyuda.documento.value.dondeConseguir\")\r\n .fw-bold.fs-6 ¿Dónde se consigue?\r\n span {{ modalAyuda.documento.value.dondeConseguir }}\r\n br\r\n div(v-if=\"modalAyuda.documento.value.mesesVigencia\")\r\n .fw-bold.fs-6 Tiempo de Validéz\r\n span {{ modalAyuda.documento.value.mesesVigencia }} Meses\r\n br\r\n div(v-if=\"modalAyuda.documento.value.porqueNecesario\")\r\n .fw-bold.fs-6 ¿Por qué es necesario?\r\n span {{ modalAyuda.documento.value.porqueNecesario }}\r\n .modal-footer\r\n button.btn.btn-primary.text-light.fw-bold(type=\"button\" data-bs-dismiss=\"modal\") Cerrar\r\n\r\n.modal.fade(ref=\"modalCargarArchivoDom\" data-bs-keyboard=\"false\")\r\n .modal-dialog.modal-xl: .modal-content\r\n .modal-header\r\n h5.modal-title Vista previa del archivo\r\n button.btn-close(data-bs-dismiss=\"modal\")\r\n .modal-body(style=\"height: calc(100vh - 202px); overflow: auto\" v-if=\"!modalCargarArchivo.enviando.value\")\r\n div Este es el documento elegido. Antes de enviar, confirma que es el correcto.\r\n .row\r\n .col-md-6\r\n iframe.w-100(v-if=\"modalCargarArchivoVerArchivo\" :src=\"modalCargarArchivo.urlArchivo.value\" style=\"height: calc(100vh - 338px)\")\r\n p Archivo: {{ modalCargarArchivoNombreArchivo }}\r\n div Tamaño: {{ modalCargarArchivoPesoArchivo }}\r\n .col-md-6\r\n p.fw-bold Considera que:\r\n ul\r\n li El tamaño máximo admitido es 1 GB. Los documentos grandes tardarán en subir.\r\n li Es legible y la orientación es correcta.\r\n li Si el documento es de varias hojas, debes integrarlas todas en un solo archivo antes de enviarlo.\r\n li No se pueden subir archivos ejecutables.\r\n div En caso de que tengas algún inconveniente para cargarlo, contacta a tu asesor para ayudarte a resolverlo.\r\n .modal-body(v-if=\"modalCargarArchivo.enviando.value\")\r\n p.text-center.fw-bold(v-if=\"!modalCargarArchivo.respuesta.value\") El documento se está enviando.\r\n .progress.my-3(v-if=\"!modalCargarArchivo.respuesta.value\")\r\n .progress-bar.progress-bar-striped.progress-bar-animated(:style=\"{ width: modalCargarArchivo.progreso.value + '%' }\")\r\n .fw-bold.text-center(v-if=\"modalCargarArchivo.respuesta.value && modalCargarArchivo.respuesta.value.estado == 'OK'\")\r\n p.text-success: i.fas.fa-circle-check.fa-2xl\r\n p Documento enviado\r\n .fw-bold.text-center(v-if=\"modalCargarArchivo.respuesta.value && modalCargarArchivo.respuesta.value.estado != 'OK'\") \r\n p.text-danger: i.fas.fa-circle-xmark.fa-2xl\r\n p {{ modalCargarArchivo.respuesta.value.mensaje }}\r\n div El documento entra a etapa de revisión. En caso de que requieras hacer alguna modificación, por favor contacta a tu asesor.\r\n .modal-footer\r\n button.btn.btn-primary(v-if=\"!modalCargarArchivo.enviando.value\" @click.prevent=\"cargarArchivo()\") Enviar\r\n button.btn.btn-secondary(v-if=\"!modalCargarArchivo.enviando.value\" data-bs-dismiss=\"modal\") Cancelar\r\ninput.d-none(ref=\"inputFile\" @change=\"mostrarModalCargarArchivo()\" type=\"file\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport type { Toast } from \"@/store\";\r\nimport type { ClienteDocumentos } from \"../../composables/EstudioSocioeconomico\";\r\nimport type { Respuesta } from \"@/servicios/api\";\r\nimport type { CancelTokenSource } from \"axios\";\r\nimport { useStore } from \"@/store\";\r\nimport { useRouter } from \"vue-router\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport axios from \"axios\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport type { Core } from \"@/servicios/api\";\r\nimport { withDefaults, toRefs, reactive, computed, onMounted, nextTick, ref } from \"vue\";\r\n\r\nconst componentId = utilidades.generarId();\r\nconst $router = useRouter();\r\nconst $store = useStore();\r\n\r\ninterface Props {\r\n cliente: ClienteDocumentos;\r\n}\r\n\r\nconst props = withDefaults(defineProps<Props>(), {\r\n cliente: () => ({\r\n documentos: [],\r\n documentosOS: [],\r\n documentosConyuge: [],\r\n documentosCotitular: [],\r\n documentosVendedor: [],\r\n documentosGaranteHipotecario: [],\r\n documentosConyugeVendedor: []\r\n })\r\n});\r\n\r\nconst modalAyuda = toRefs(\r\n reactive({\r\n titulo: \"\",\r\n documento: {} as Core.Models.EstudioSocioeconomicoDocumento\r\n })\r\n);\r\nconst modalCargarArchivo = toRefs(\r\n reactive({\r\n documento: {} as Core.Models.EstudioSocioeconomicoDocumento,\r\n numeroObligadoSolidario: 0 as undefined | number,\r\n estudioSocioeconomicoEntidad: null as null | Core.Enums.EstudioSocioeconomicoEntidad,\r\n urlArchivo: \"about:blank\",\r\n archivo: null as null | File,\r\n progreso: 0,\r\n enviando: false,\r\n respuesta: null as null | Respuesta,\r\n tokenCancelacion: null as null | CancelTokenSource\r\n })\r\n);\r\n\r\nconst modalCargarArchivoNombreArchivo = computed((): string => {\r\n if (modalCargarArchivo.archivo.value == null) return \"\";\r\n return modalCargarArchivo.archivo.value.name;\r\n});\r\nconst modalCargarArchivoPesoArchivo = computed((): string => {\r\n if (modalCargarArchivo.archivo.value == null) return \"\";\r\n let peso = modalCargarArchivo.archivo.value.size / 1024;\r\n let formater = new Intl.NumberFormat(\"es-MX\", { style: \"decimal\", maximumFractionDigits: 2 });\r\n if (peso < 1024) return formater.format(peso) + \" kB\";\r\n return formater.format(peso / 1024) + \" MB\";\r\n});\r\nconst modalCargarArchivoVerArchivo = computed((): boolean => {\r\n if (modalCargarArchivo.archivo.value == null) return false;\r\n return /^(application\\/pdf|image\\/.+|video\\/.+|audio\\/.+)/g.test(modalCargarArchivo.archivo.value.type);\r\n});\r\n\r\nconst modalCargarArchivoDom = ref(null as HTMLDivElement | null);\r\nconst inputFile = ref(null as HTMLInputElement | null);\r\n\r\nonMounted(async () => {\r\n await nextTick();\r\n (modalCargarArchivoDom.value as HTMLDivElement).addEventListener(\"hide.bs.modal\", () => {\r\n window.URL.revokeObjectURL(modalCargarArchivo.urlArchivo.value);\r\n modalCargarArchivo.archivo.value = null;\r\n modalCargarArchivo.urlArchivo.value = \"about:blank\";\r\n modalCargarArchivo.progreso.value = 0;\r\n modalCargarArchivo.enviando.value = false;\r\n modalCargarArchivo.respuesta.value = null;\r\n if (modalCargarArchivo.tokenCancelacion.value)\r\n modalCargarArchivo.tokenCancelacion.value.cancel(\"Cancelado por el usuario\");\r\n });\r\n});\r\n\r\nfunction mostrarModalAyuda(nombre: string, documento: Core.Models.EstudioSocioeconomicoDocumento) {\r\n modalAyuda.titulo.value = nombre;\r\n modalAyuda.documento.value = documento;\r\n}\r\nfunction seleccionarArchivo(\r\n documento: Core.Models.EstudioSocioeconomicoDocumento,\r\n entidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n nOS: undefined | number\r\n) {\r\n modalCargarArchivo.documento.value = documento;\r\n modalCargarArchivo.estudioSocioeconomicoEntidad.value = entidad;\r\n modalCargarArchivo.numeroObligadoSolidario.value = nOS;\r\n inputFile.value!.click();\r\n}\r\nfunction mostrarModalCargarArchivo() {\r\n let archivos = inputFile.value!.files;\r\n if (archivos?.length) {\r\n modalCargarArchivo.archivo.value = archivos[0];\r\n modalCargarArchivo.urlArchivo.value = window.URL.createObjectURL(archivos[0]);\r\n let instancia = bootstrap.Modal.getInstance(modalCargarArchivoDom.value!);\r\n if (!instancia)\r\n instancia = new bootstrap.Modal(modalCargarArchivoDom.value!, {\r\n keyboard: false,\r\n backdrop: \"static\"\r\n });\r\n instancia.show();\r\n }\r\n inputFile.value!.value = \"\";\r\n}\r\nasync function cargarArchivo() {\r\n if (modalCargarArchivo.archivo.value!.size / 1024 / 1024 > 1024) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.WARNING,\r\n body: \"El archivo pesa más de 1 GB.\"\r\n });\r\n bootstrap.Modal.getInstance(modalCargarArchivoDom.value!)?.hide();\r\n }\r\n modalCargarArchivo.enviando.value = true;\r\n modalCargarArchivo.documento.value.estatus = -1;\r\n modalCargarArchivo.tokenCancelacion.value = axios.CancelToken.source();\r\n let token = ($router.currentRoute.value.query[\"estudioId\"] as string) ?? \"\";\r\n let res = await api.Cliente.Cliente.EscrituracionApi.GuardarDocumento(\r\n modalCargarArchivo.archivo.value!,\r\n modalCargarArchivo.documento.value.documentoTramiteTitulacionId,\r\n modalCargarArchivo.numeroObligadoSolidario.value ?? 0,\r\n token,\r\n modalCargarArchivo.estudioSocioeconomicoEntidad.value!,\r\n {\r\n onUploadProgress: (progressEvent: ProgressEvent) => {\r\n if (progressEvent.lengthComputable)\r\n modalCargarArchivo.progreso.value = (progressEvent.loaded / progressEvent.total) * 100;\r\n },\r\n cancelToken: modalCargarArchivo.tokenCancelacion.value.token\r\n }\r\n );\r\n modalCargarArchivo.respuesta.value = res.data;\r\n}\r\nfunction obtenerUrlVerArchivo(\r\n documento: Core.Models.EstudioSocioeconomicoDocumento,\r\n entidad: Core.Enums.EstudioSocioeconomicoEntidad,\r\n nOS: undefined | number\r\n) {\r\n const url = new URL(\r\n document.baseURI.replace(/\\/$/g, \"\") + api.Cliente.Cliente.EscrituracionApi.ObtenerDocumentoUrl,\r\n window.location.protocol + \"//\" + window.location.host\r\n );\r\n const searchParams = new URLSearchParams(url.search);\r\n if ($router.currentRoute.value.query[\"estudioId\"])\r\n searchParams.set(\"token\", $router.currentRoute.value.query[\"estudioId\"] as string);\r\n if (nOS != undefined) searchParams.set(\"obligadoSolidarioNumero\", String(nOS));\r\n searchParams.set(\"estudioSocioeconomicoEntidad\", entidad);\r\n searchParams.set(\"documentoTramiteTitulacionId\", String(documento.documentoTramiteTitulacionId));\r\n url.search = searchParams.toString();\r\n return url.toString();\r\n}\r\nfunction obtenerEstadoDocumento(estatus: null | number): string {\r\n if (estatus == null || estatus == 0) return `<em class=\"far fa-circle me-2\"></em>Sin cargar`;\r\n if (estatus == 1) return `<em class=\"fas fa-check-circle me-2\"></em>Aceptado`;\r\n if (estatus == 2) return `<em class=\"fas fa-times-circle me-2\"></em>Rechazado`;\r\n if (estatus == 3) return `<em class=\"fas fa-circle me-2\"></em>No necesario`;\r\n return `<em class=\"far fa-circle me-2\"></em>Pendiente de validar`;\r\n}\r\nfunction obtenerClasesEstadoDocumento(estatus: null | number): string {\r\n if (estatus == 1) return \"text-success\";\r\n if (estatus == 2) return \"text-danger\";\r\n return \"\";\r\n}\r\n</script>\r\n","<template lang=\"pug\">\r\ndiv\r\n .container.py-4\r\n .row\r\n .col-md-6.offset-md-3.bg-white.rounded-pill.shadow.ProgressTimeLine\r\n c-c-timeline(:items=\"timeline.items.value\" :progress=\"timeline.progress.value\")\r\n .col-md-6.offset-md-3.bg-white.shadow.ProgressCircular\r\n .row.text-center\r\n .col-3.d-flex.justify-content-start\r\n Progress.ProgressCircular(:radius=\"40\" :strokeWidth=\"8\" :value=\"barCircular.progreso.value\" strokeColor=\"#EB8113\")\r\n a(style=\"font-size: 14px\") {{ barCircular.Etapa.value }} / 4\r\n .col-9.align-self-center\r\n p.text-left(style=\"font-size: 20px; font-weight: bold; color: #eb8113\") {{ barCircular.Leyenda.value }}\r\n //-.row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-12\r\n .d-inline-block(\r\n style=\"background: #374066; color: #ffffff; padding: 15px 26px; border-top-left-radius: 11px; border-top-right-radius: 11px; margin-left: 26px\"\r\n ) Escrituración\r\n .row.mt-2\r\n .col-md-12.shadow(style=\"border-radius: 8px; padding: 0\")\r\n div(style=\"background: #eceff2; padding: 16px 26px; border-bottom: #95a7d6 1px solid\")\r\n //- Integracion de Menu \r\n nav.navbar.navbar-expand-lg.navbar-dark\r\n a.navbar-brand(\r\n style=\"background: #374066; color: #ffffff; padding: 8px 18px; border-top-left-radius: 11px; border-top-right-radius: 11px; margin-left: 26px\"\r\n ) Escrituración\r\n button.navbar-toggler(\r\n type=\"button\"\r\n data-bs-toggle=\"collapse\"\r\n data-bs-target=\"#navbarNav\"\r\n aria-controls=\"navbarNav\"\r\n aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\"\r\n )\r\n span.fas.fa-bars(style=\"color: black\")\r\n #navbarNav.collapse.navbar-collapse\r\n ul.navbar-nav.me-auto.mb-2.mb-lg-0\r\n li.nav-item\r\n router-link.d-inline-block.pestania.text-decoration-none(:to=\"{ name: 'cliente-cliente-aes' }\")\r\n | Estudio Socioeconómico\r\n span(v-bind:class=\"CheckProgreso\" v-bind:style=\"CheckStyleProceso\")\r\n //-img(src=\"../assets/Interrogacion.svg\")\r\n li.nav-item\r\n a.d-inline-block.pestania.text-decoration-none(\r\n href=\"#\"\r\n style=\"font-size: 14px\"\r\n v-if=\"(cliente.llavesObligadoSolidario.value || []).length + (cliente.llavesCotitular.value || []).length + (cliente.llavesGaranteHipotecario.value || []).length == 1\"\r\n @click.prevent=\"mostrarObligadoSolidario()\"\r\n :class=\"{ active: pestania == 'obligado-solidario' }\"\r\n )\r\n | Figura Apoyo\r\n //-| Obligado Solidario o Cotitular\r\n //-img(src=\"../assets/Interrogacion.svg\")\r\n .dropdown.d-inline-block(\r\n v-if=\"(cliente.llavesObligadoSolidario.value || []).length + (cliente.llavesCotitular.value || []).length + (cliente.llavesGaranteHipotecario.value || []).length > 1\"\r\n )\r\n button.btn.dropdown-toggle.pestania.d-inline-block(data-bs-toggle=\"dropdown\" style=\"font-size: 14px\") Figuras Apoyo\r\n span(v-bind:class=\"CheckProgreso\" v-bind:style=\"CheckStyleProceso\")\r\n ul.dropdown-menu\r\n li(v-for=\"(llave, i) in cliente.llavesObligadoSolidario.value\")\r\n a.dropdown-item(href=\"#\" @click.prevent=\"mostrarObligadoSolidario(llave, 'Obligado Solidario ' + (i + 1))\") Obligado Solidario {{ i + 1 }}\r\n li(v-for=\"(llave, i) in cliente.llavesCotitular.value\")\r\n a.dropdown-item(href=\"#\" @click.prevent=\"mostrarObligadoSolidario(llave, 'Cotitular ' + (i + 1))\") Cotitular {{ i + 1 }}\r\n li(v-for=\"(llave, i) in cliente.llavesGaranteHipotecario.value\")\r\n a.dropdown-item(href=\"#\" @click.prevent=\"mostrarObligadoSolidario(llave, 'Garante Hipotecario ' + (i + 1))\") Garante Hipotecario {{ i + 1 }}\r\n li.nav-item\r\n a.d-inline-block.pestania.text-decoration-none(\r\n href=\"#\"\r\n @click.prevent=\"pestania = 'autorizacion-consulta-buro-credito'\"\r\n :class=\"{ active: pestania == 'autorizacion-consulta-buro-credito' }\"\r\n style=\"font-size: 14px\"\r\n )\r\n | Consulta de Buró de Crédito\r\n span.fas.fa-question-circle(style=\"color: #eb8113\")\r\n //-img(src=\"../assets/Interrogacion.svg\")\r\n //-li(class=\"nav-item\")\r\n .d-inline-block.pestania(style=\"font-size:15px;\") \r\n | AsesorÃa\r\n span.fas.fa-question-circle(style=\"color:#EB8113;\")\r\n //-img(src=\"../assets/Interrogacion.svg\")\r\n li.nav-item\r\n a.d-inline-block.pestania.text-decoration-none(\r\n href=\"#\"\r\n style=\"font-size: 14px\"\r\n @click.prevent=\"pestania = 'checklist-documentos'\"\r\n :class=\"{ active: pestania == 'checklist-documentos' }\"\r\n )\r\n | Checklist\r\n span.fas.fa-question-circle(style=\"color: #eb8113\")\r\n //-img(src=\"../assets/Interrogacion.svg\")\r\n //-Fin de Menu\r\n div\r\n estudio-socioeconomico(v-if=\"pestania == 'estudio-socioeconomico'\" :mostrar-header-footer=\"false\")\r\n obligado-solidario(\r\n v-if=\"pestania == 'obligado-solidario'\"\r\n :mostrar-header-footer=\"false\"\r\n :llave=\"cliente.llaveActual.value\"\r\n :header=\"cliente.headerActual.value\"\r\n )\r\n .p-4(v-if=\"pestania == 'autorizacion-consulta-buro-credito'\")\r\n iframe.w-100.mb-4(\r\n :src=\"api.Cliente.Cliente.EscrituracionApi.ObtenerArchivoAutorizacionConsultaBuroCreditoUrl + '?id=' + $router.currentRoute.value.query['estudioId']\"\r\n style=\"height: 400px\"\r\n v-if=\"cliente.autorizacionConsultaBuroCredito.value\"\r\n )\r\n .row\r\n .d-inline-block.rounded-pill.border.bg-white.p-3.col-md-4.offset-md-4(style=\"border-color: #94a3af\")\r\n | Entregado\r\n input.form-check-input.float-end(type=\"radio\" @click.prevent=\"\" :checked=\"cliente.autorizacionConsultaBuroCredito.value\")\r\n div(v-if=\"pestania == 'checklist-documentos'\" style=\"padding: 30px\")\r\n lista-documentos(:cliente=\"toRaw(reactiveCliente)\")\r\n .mt-4.row\r\n .d-inline-block.rounded-pill.border.bg-white.p-3.col-md-4.offset-md-4.text-center(style=\"border-color: #94a3af; color: #94a3af\")\r\n | Documentos Entregados \r\n span.fw-bold {{ clienteTotalDocumentos }}\r\n |  de \r\n span.fw-bold {{ clienteDocumentosEntregados }}\r\n\r\n// Modal\r\n.modal.fade(\r\n :id=\"'modalEscrituracion-' + modalId\"\r\n data-bs-backdrop=\"static\"\r\n data-bs-keyboard=\"false\"\r\n tabindex=\"-1\"\r\n aria-labelledby=\"staticBackdropLabel\"\r\n aria-hidden=\"true\"\r\n)\r\n .modal-dialog.modal-dialog-centered\r\n .modal-content\r\n .modal-body.text-secondary\r\n | Este módulo se ha actualizado a una nueva versión. ¡Favor de contactar a su asesor para mayor información!\r\n .modal-footer\r\n router-link(:to=\"{ name: 'cliente-cliente-home' }\")\r\n button.btn.btn-primary.text-white(type=\"button\" @click=\"cerrarModal\") Inicio\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport CCTimeline from \"../components/CCTimeline.vue\";\r\nimport EstudioSocioeconomico from \"./EstudioSocioeconomico.vue\";\r\nimport ObligadoSolidario from \"./ObligadoSolidario.vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport Progress from \"@/components/EasyCircularProgress.vue\";\r\nimport ListaDocumentos from \"./EstudioSocioeconomico/ListaDocumentos.vue\";\r\nimport type { Toast } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { reactive, toRefs, ref, computed, nextTick, toRaw } from \"vue\";\r\nimport { useStore } from \"@/store\";\r\nimport type { Core } from \"@/servicios/api\";\r\nimport type { ClienteDocumentos2 } from \"../composables/EstudioSocioeconomico\";\r\nimport { useRouter } from \"vue-router\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { onMounted, onBeforeMount } from \"vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\n//#region Data\r\nconst $store = useStore();\r\nconst $router = useRouter();\r\nconst timeline = toRefs(\r\n reactive({\r\n items: [\"Definición del proyecto\", \"Integración de Expediente\", \"Análisis\", \"Firma\"],\r\n progress: 0\r\n })\r\n);\r\nconst barCircular = toRefs(\r\n reactive({\r\n progreso: 25,\r\n Etapa: 1,\r\n Leyenda: \"Definición del proyecto\"\r\n })\r\n);\r\nconst pestania = ref(\"checklist-documentos\");\r\nconst reactiveCliente = reactive({\r\n nombreCompleto: \"\",\r\n estudioSocioeconomicoId: 0,\r\n estudioSocioeconomicoBloqueado: false,\r\n autorizacionConsultaBuroCredito: false,\r\n documentos: [] as Core.Models.EstudioSocioeconomicoDocumento[],\r\n documentosOS: [] as Core.Models.EstudioSocioeconomicoDocumento[][],\r\n documentosConyuge: [] as Core.Models.EstudioSocioeconomicoDocumento[],\r\n documentosCotitular: [] as Core.Models.EstudioSocioeconomicoDocumento[][],\r\n documentosVendedor: [] as Core.Models.EstudioSocioeconomicoDocumento[],\r\n documentosGaranteHipotecario: [] as Core.Models.EstudioSocioeconomicoDocumento[],\r\n documentosConyugeVendedor: [] as Core.Models.EstudioSocioeconomicoDocumento[],\r\n llavesObligadoSolidario: [] as string[],\r\n llavesCotitular: [] as string[],\r\n llavesGaranteHipotecario: [] as string[],\r\n llaveActual: \"\",\r\n headerActual: \"\"\r\n} as ClienteDocumentos2);\r\nconst cliente = toRefs(reactiveCliente);\r\nconst modalId = utilidades.generarId();\r\n\r\n//#endregion\r\n\r\n//#region Computed\r\nconst clienteDocumentosEntregados = computed(\r\n (): number =>\r\n cliente.documentos.value.length +\r\n cliente.documentosConyuge.value.length +\r\n cliente.documentosVendedor.value.length +\r\n cliente.documentosGaranteHipotecario.value.length +\r\n cliente.documentosOS.value.flat().length +\r\n cliente.documentosCotitular.value.flat().length\r\n);\r\nconst clienteTotalDocumentos = computed(\r\n (): number =>\r\n cliente.documentos.value.filter(e => e.guardado).length +\r\n cliente.documentosConyuge.value.filter(e => e.guardado).length +\r\n cliente.documentosVendedor.value.filter(e => e.guardado).length +\r\n cliente.documentosGaranteHipotecario.value.filter(e => e.guardado).length +\r\n cliente.documentosOS.value.flat().filter(e => e.guardado).length +\r\n cliente.documentosCotitular.value.flat().filter(e => e.guardado).length\r\n);\r\nconst CheckProgreso = computed((): string => \"fas fa-circle\");\r\nconst CheckStyleProceso = computed((): string => (timeline.progress.value >= 33.33 ? \"color:green;\" : \"color:red;\"));\r\n//#endregion\r\n\r\n//#region Methods\r\n\r\nfunction abrirModal() {\r\n const miModal = document.getElementById(`modalEscrituracion-${modalId}`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n if (modal) {\r\n modal?.show();\r\n } else {\r\n const nuevoModal = new bootstrap.Modal(miModal);\r\n nuevoModal?.show();\r\n }\r\n}\r\n\r\nfunction cerrarModal() {\r\n const miModal = document.getElementById(`modalEscrituracion-${modalId}`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n modal?.hide();\r\n}\r\n\r\nasync function mostrarObligadoSolidario(llave?: string, header?: string) {\r\n if (pestania.value == \"obligado-solidario\") {\r\n pestania.value = \"\";\r\n await nextTick();\r\n }\r\n if (llave == undefined) {\r\n llave = cliente.llavesObligadoSolidario.value[0] || cliente.llavesCotitular.value[0];\r\n if (cliente.llavesObligadoSolidario.value.length) header = \"Obligado Solidario\";\r\n else header = cliente.llavesCotitular.value.length ? \"Cotitular\" : \"Garante Hipotecario\";\r\n }\r\n pestania.value = \"obligado-solidario\";\r\n cliente.llaveActual.value = llave;\r\n cliente.headerActual.value = header ?? \"\";\r\n}\r\n\r\nfunction cargarBarraCircular() {\r\n if (timeline.progress.value <= 33.33 && timeline.progress.value > 0) {\r\n barCircular.Etapa.value = 2;\r\n barCircular.Leyenda.value = \"Integración de Expediente\";\r\n } else if (timeline.progress.value <= 66.66 && timeline.progress.value > 33.33) {\r\n barCircular.Etapa.value = 3;\r\n barCircular.Leyenda.value = \"Análisis\";\r\n } else if (timeline.progress.value > 66.66) {\r\n barCircular.Etapa.value = 4;\r\n barCircular.Leyenda.value = \"Firma\";\r\n }\r\n barCircular.progreso.value = timeline.progress.value == 0 ? 25 : timeline.progress.value;\r\n}\r\n//#endregion\r\n\r\nlet escrituracion = $router.currentRoute.value.query[\"estudioId\"] as string;\r\n\r\nif (escrituracion == undefined) escrituracion = \"0\";\r\n\r\nlet progreso = await api.Cliente.Cliente.EscrituracionApi.ObtenerProgresoEscrituracion(escrituracion);\r\n\r\nif (!progreso.data.estudioSocioeconomicoId) {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"El link proporcionado no es válido, verifica e intenta nuevamente.\"\r\n } as Toast);\r\n $router.replace({ name: \"cliente-cliente-login\" });\r\n} else {\r\n cliente.nombreCompleto.value = progreso.data.nombreCompletoCliente || \"\";\r\n cliente.estudioSocioeconomicoId.value = progreso.data.estudioSocioeconomicoId;\r\n timeline.progress.value = progreso.data.progreso;\r\n cliente.estudioSocioeconomicoBloqueado.value = progreso.data.estudioSocioeconomicoBloqueado;\r\n cliente.autorizacionConsultaBuroCredito.value = progreso.data.autorizacionConsultaBuroCredito;\r\n cliente.documentos.value = progreso.data.documentos!;\r\n cliente.documentosOS.value = progreso.data.documentosObligadoSolidario!;\r\n cliente.documentosConyuge.value = progreso.data.documentosConyuge!;\r\n cliente.documentosCotitular.value = progreso.data.documentosCotitular!;\r\n cliente.documentosVendedor.value = progreso.data.documentosVendedor!;\r\n cliente.documentosConyugeVendedor.value = progreso.data.documentosConyugeVendedor!;\r\n cliente.documentosGaranteHipotecario.value = progreso.data.documentosGaranteHipotecario!;\r\n cliente.llavesObligadoSolidario.value = progreso.data.llavesObligadoSolidario!;\r\n cliente.llavesCotitular.value = progreso.data.llavesCotitular!;\r\n cliente.llavesGaranteHipotecario.value = progreso.data.llavesGaranteHipotecario!;\r\n if (cliente.estudioSocioeconomicoBloqueado.value) pestania.value = \"autorizacion-consulta-buro-credito\";\r\n if (timeline.progress.value >= 33.33) pestania.value = \"checklist-documentos\";\r\n cargarBarraCircular();\r\n}\r\n\r\nonMounted(() => {\r\n console.log(\"se monto la APP\");\r\n abrirModal();\r\n});\r\n\r\nonBeforeMount(() => {});\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n@media screen and (max-width: 1920px) {\r\n .ProgressTimeLine {\r\n display: block;\r\n }\r\n .ProgressCircular {\r\n display: none;\r\n }\r\n}\r\n@media screen and (max-width: 800px) {\r\n .ProgressTimeLine {\r\n display: block;\r\n }\r\n .ProgressCircular {\r\n display: none;\r\n }\r\n}\r\n@media screen and (max-width: 500px) {\r\n .ProgressTimeLine {\r\n display: none;\r\n }\r\n .ProgressCircular {\r\n display: block;\r\n }\r\n}\r\n\r\ndiv .pestania:not(:last-child) {\r\n margin-right: 12px;\r\n}\r\n\r\n.pestania {\r\n font-weight: bold;\r\n color: #374066;\r\n padding: 9px 30px;\r\n border-radius: 90px;\r\n\r\n > img {\r\n margin-left: 8px;\r\n }\r\n}\r\n\r\n.contenedor-Documentos {\r\n border: 2px dotted #bdbdbd;\r\n margin-top: 1rem;\r\n margin-left: 0.1rem;\r\n width: 100%;\r\n}\r\n.area-drag {\r\n background-color: #f8f8f8;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n text-align: center;\r\n padding: 1rem;\r\n}\r\n.area-drag .icon {\r\n font-size: 2.5rem;\r\n color: #eb8113;\r\n}\r\n.area-lista-archivos {\r\n align-items: center;\r\n padding-top: 1rem;\r\n}\r\n\r\n.area-lista-archivos p {\r\n color: #eb8113;\r\n opacity: 0.7;\r\n}\r\n\r\n.textoDrag {\r\n color: #828282;\r\n}\r\n.buscarDrag {\r\n color: #eb8113;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n.archivoSubido {\r\n list-style: none;\r\n color: #eb8113;\r\n font-weight: bold;\r\n}\r\n.iconoArchivo {\r\n padding: 0.3rem;\r\n color: rgb(201, 67, 67);\r\n font-size: 14px;\r\n}\r\n.iconoEliminarArchivo {\r\n color: rgba(95, 95, 95, 0.699);\r\n margin-left: 2.2rem;\r\n font-size: 12px;\r\n cursor: pointer;\r\n}\r\n.pointer {\r\n cursor: pointer;\r\n}\r\n.textHir1 {\r\n color: #eb8113;\r\n font-weight: bold;\r\n}\r\n</style>\r\n\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-6\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") Materiales de Apoyo\r\n .row: .col-md-12: input.form-control.mt-4(type=\"search\" v-model=\"filtrarMaterialApoyo\" placeholder=\"Busqueda de Material de Apoyo\")\r\n p.text-muted.mt-4(v-if=\"resultadoBusqueda.length == 0\") Puedes encontrar toda la documentación de apoyo de tu proceso en  \r\n span.text-primary.fw-bold HIR Casa.\r\n |   Cualquier duda que persista puedes consultarla directamente con nosotros a través de nuestro \r\n span.text-primary.fw-bold Chat\r\n |   o  \r\n span.text-primary.fw-bold WhatsApp.\r\n .row(v-if=\"resultadoBusqueda.length > 0\")\r\n .col-md-12.mt-2.text-center.fw-bold.fs-6(\r\n v-for=\"(resp, i) in resultadoBusqueda\"\r\n :key=\"resp\"\r\n :style=\"crearStyle(resp.tipo)\"\r\n :class=\"crearClass(resp.tipo)\"\r\n @click.prevent=\"crearRuta(resp)\"\r\n ): p.text-center.fw-bold(\r\n style=\"color: #2f2d74\"\r\n ) {{ resp.texto }}\r\n .col-md-6.text-end: img(src=\"../assets/img_main_pc.png\" style=\"height: 340px\")\r\n .bg-white.mt-3.botones-secciones.pt-3.mb-4\r\n .row: .col.text-center.fw-bold.fs-5(style=\"color: #2f2d74\") Ayuda por Temas\r\n .row.justify-content-center.mt-3.mb-3\r\n template(v-for=\"(item, i) in menuMaterialApoyo\" :key=\"i\")\r\n .col-2(:id=\"i == 106 ? 'margin-to-left' : ''\" :style=\"[i == 109 ? { transform: 'translateX(50%)' } : {}]\")\r\n router-link.text-decoration-none(:to=\"{ name: item.path }\")\r\n img.rounded.mx-auto.d-block.mb-2(:src=\"item.icon\")\r\n p.text-center.fw-bold(style=\"color: #2f2d74\") {{ item.nombre }}\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, watch, onMounted } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useRouter } from \"vue-router\";\r\nimport type { Cliente } from \"@/servicios/api\";\r\ninterface MaterialApoyo {\r\n texto: string;\r\n tipo: number;\r\n ruta: string;\r\n}\r\n//#region Data\r\nconst $router = useRouter();\r\nconst filtrarMaterialApoyo = ref(\"\");\r\nconst resultadoBusqueda = ref([] as any[]);\r\nconst materialApoyo = ref([] as MaterialApoyo[]);\r\nconst titulos = ref([] as any[]);\r\nconst menuMaterialApoyo = ref([] as Cliente.Cliente.MaterialApoyo[]);\r\nconst arrayCopy = ref([] as any[]);\r\n\r\n//#endregion\r\n\r\n//#region Methods\r\nfunction crearStyle(value: number): string {\r\n if (value == 0) return \"color: #2f2d74\";\r\n if (value == 3) return \"color: #c8c8c8\";\r\n return \"\";\r\n}\r\nfunction crearClass(value: number): string {\r\n if (value == 1) return \"text-primary\";\r\n if (value == 2) return \"text-muted\";\r\n return \"\";\r\n}\r\nfunction cargarElementos() {\r\n materialApoyo.value = [];\r\n //- Titulos Menu\r\n materialApoyo.value.push({ texto: \"Bienvenida\", tipo: 0, ruta: \"cliente-cliente-material-apoyo-bienvenida\" });\r\n materialApoyo.value.push({ texto: \"Introducción\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({\r\n texto: \"Bullets relevantes de HIR CASA Link a Conócenos Página web\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"¿Cómo Funciona?\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Roadmap\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Acciones Generales\",\r\n tipo: 0,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cambio de Password\",\r\n tipo: 0,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Actualización de Datos (Mi Perfil) Formas de Pago Cesión de Derechos\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Contacto Asesor\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n //- Mi Pagos\r\n materialApoyo.value.push({\r\n texto: \"Pagos\",\r\n tipo: 0,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Inducción(¿Por qué es importante el pago?)\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Descripción General Referente a pago (Aclaraciones y Consultas)\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Descripción de Estado de Cuenta\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Métodos de Pago\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Pago por referencia Única Contrato por Contrato\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"¿Dónde puedo hacer el pago?\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Ventanilla Bancaria\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Transferencia\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cheque\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Corresponsal\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Domiciliación\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-pagos\"\r\n });\r\n //- Mi Tramite\r\n materialApoyo.value.push({\r\n texto: \"Tramites\",\r\n tipo: 0,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Inducción\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Descripción General\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Tipos de Trámites\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cambio de Domicilio\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cambio de Datos de Contacto\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cambio de Beneficiarios\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Fusión\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Sesión de Derechos\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Incremento de Monto Contratado\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Disminución de Monto\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Liquidación Anticipada\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-liquidacion\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Cancelación\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Domiciliación\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Seguro de Vida\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Seguro de Daños\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Aclaraciones\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n //- Mi Adjudicacion\r\n materialApoyo.value.push({ texto: \"Adjudicación\", tipo: 0, ruta: \"cliente-cliente-material-apoyo-Adjudiacion\" });\r\n materialApoyo.value.push({\r\n texto: \"Inducción Adjudicación\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"¿Qué es una Adjudicación?\",\r\n tipo: 2,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Formas de Adjudicación\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n materialApoyo.value.push({ texto: \"Natural\", tipo: 2, ruta: \"cliente-cliente-material-apoyo-Adjudiacion\" });\r\n materialApoyo.value.push({ texto: \"Obligatoria\", tipo: 2, ruta: \"cliente-cliente-material-apoyo-Adjudiacion\" });\r\n materialApoyo.value.push({ texto: \"Lista de Espera\", tipo: 2, ruta: \"cliente-cliente-material-apoyo-Adjudiacion\" });\r\n materialApoyo.value.push({\r\n texto: \"Guia de Adjudicatario\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Complemento Cuota de Inscripción\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n materialApoyo.value.push({\r\n texto: \"Rechazo de Adjudicación\",\r\n tipo: 1,\r\n ruta: \"cliente-cliente-material-apoyo-Adjudiacion\"\r\n });\r\n //- Mi Escrituracion\r\n materialApoyo.value.push({ texto: \"Escrituración\", tipo: 0, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Inducción\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"¿Qué es Escrituración?\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Requisitos para Escriturar\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Actualización de ES\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"InfografÃa de Proceso de titulación\", tipo: 3, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Consulta de Buró de Crédito\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Trámite del Avalúo\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"InfografÃa de proceso\", tipo: 3, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Catálogo de Notarias\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n //- Mi Seguro\r\n materialApoyo.value.push({ texto: \"Seguros\", tipo: 0, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Inducción\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"¿Por qué necesito un seguro?\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Tipos de Seguro\", tipo: 1, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Descripción e Infografia\", tipo: 3, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({\r\n texto: \"*Proceso de Reclamo de Seguro (Siniestros)\",\r\n tipo: 3,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n materialApoyo.value.push({ texto: \"Daños\", tipo: 2, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({ texto: \"Descripción e Infografia\", tipo: 3, ruta: \"cliente-cliente-home\" });\r\n materialApoyo.value.push({\r\n texto: \"*Proceso de Reclamo de Seguro (Siniestros)\",\r\n tipo: 3,\r\n ruta: \"cliente-cliente-home\"\r\n });\r\n}\r\nfunction crearRuta(value: any) {\r\n $router.push({ name: value.ruta });\r\n}\r\n//#endregion\r\n\r\n//#region Watchers\r\nwatch(filtrarMaterialApoyo, value => {\r\n filtrarMaterialApoyo.value = value.toUpperCase();\r\n cargarElementos();\r\n if (\r\n filtrarMaterialApoyo.value == \"\" ||\r\n filtrarMaterialApoyo.value == undefined ||\r\n filtrarMaterialApoyo.value == null\r\n ) {\r\n resultadoBusqueda.value = [];\r\n return;\r\n }\r\n resultadoBusqueda.value = materialApoyo.value.filter(item => {\r\n return item.texto?.toUpperCase().includes(filtrarMaterialApoyo.value) && item.tipo != 0;\r\n });\r\n});\r\nwatch(resultadoBusqueda, value => {\r\n resultadoBusqueda.value = value;\r\n});\r\n//#endregion\r\n\r\nonMounted(async () => {\r\n cargarElementos();\r\n menuMaterialApoyo.value = (await api.Cliente.Cliente.HomeApi.ListarMaterialApoyo()).data;\r\n arrayCopy.value = [...menuMaterialApoyo.value]; \r\n});\r\n</script>\r\n\r\n<style scoped>\r\n#margin-to-left {\r\n margin-left: 200px !important;\r\n}\r\nimg.rounded {\r\n height: 105px;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.container.pt-2: .row: .col.ff-poppins\r\n h1.fw-bold Sitio en mantenimiento, intenta de nuevo en unos minutos...\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useRouter } from \"vue-router\";\r\nconst $router = useRouter();\r\n\r\nlet intervalo = undefined as undefined | number;\r\n\r\n//#region Methods\r\nasync function probar() {\r\n try {\r\n await api.Cliente.Cliente.HomeApi.Ping();\r\n clearInterval(intervalo);\r\n $router.push({ name: \"cliente-cliente-home\" });\r\n } catch (_) {\r\n /* Verificación que ya esté arriba el sitio */\r\n }\r\n}\r\n//#endregion\r\n\r\nintervalo = window.setInterval(() => probar(), 5000);\r\n</script>\r\n","export default \"__VITE_ASSET__36f9dbe9__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3\r\n .row\r\n .col-md-6\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") ¿ Qué es el programa Recicla ?\r\n p(style=\"color: #6e7599; text-align: justify; text-justify: inter-word\") Estamos en una constante transformación y entrando de lleno a una era digitalizada, la cual nos exige no solo estar actualizados en temas tecnológicos, sino también, nos exige ser una empresa congruente con nuestros valores; uno de ellos sin duda es el respeto por el cuidado del medio ambiente.<br>Desde hace más de 10 años tenemos el compromiso como Empresa Socialmente Responsable de protegerlo y fomentar acciones que permitan disminuir nuestro impacto ambiental. Es por esto, que nace el programa RECICLA HIR Casa con acciones desde reducción de agua, reciclaje de contenedores, tapas, reuso de materiales, asà como el uso consciente y responsable de los elementos impresos. Te invitamos a unir a nuestro programa RECICLA HIR Casa; donde te invitamos a que decidas rechazar el uso de recibo fÃsico que contamine, a migrar un estado de cuenta electrónico que beneficie al medio ambiente.\r\n p.text-center(style=\"color: #ffa000\") ¡La sustentabilidad hoy, en la era digital ha dejado de ser una opción y se ha convertido en una prioridad para salvar al mundo!\r\n p.text-center(style=\"color: #2f2d74\") ¡Migremos a la lo digital y salvemos al planeta! Activa tu estado de cuenta digital\r\n .row: .col-md-12: .card.mb-2(style=\"border-radius: 20px\"): .card-body(style=\"background-color: #8cc63e; border-radius: 20px\")\r\n .row\r\n .col-md-12\r\n b: p.mt-2(style=\"color: #ffffff; font-size: 20px\") SabÃas que...\r\n .col-md-12 \r\n p.fs-6.mt-2(style=\"color: #ffffff\") La media del consumo anual de papel es de 48 kg por persona. Cerca del 67% de los documentos que se imprimen son evitables\r\n .col-md-6.text-end: img(src=\"../assets/img_recicla.png\" style=\"height: 340px\")\r\n .col-md-12.m-4\r\n .card.mb-2(style=\"border-radius: 20px; box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px\"): .card-body(style=\"border-radius: 20px\")\r\n .row: .col-md-12: p.fw-bold.text-center.h2(style=\"color: #2f2d74\") La decisión es tuya, activa tu estado de cuenta digital y contribuye al cuidado del medio ambiente.\r\n .row.justify-content-center\r\n .col-md-4\r\n br\r\n br\r\n .col-md-4\r\n .d-grid.gap-2: .form-check\r\n input#flexCheckDefault.form-check-input.mx-auto(type=\"checkbox\" v-model=\"Cliente.programaRecicla\")\r\n span \r\n span.form-check-label.mx-auto(for=\"flexCheckDefault\"): u(style=\"color: #2f2d74\") Acepto los Términos y Condiciones\r\n br\r\n br\r\n .col-md-4\r\n .row.justify-content-center\r\n .col-md-4\r\n .col-md-4\r\n .d-grid.gap-2: button.btn.btn-lg.text-white(v-on:click=\"ActivarProgramaRecicla\" style=\"background-color: #ffa000\") SÃ, deseo unirme a la campaña\r\n .col-md-4\r\n .col-md-12.m-2\r\n p.fs-2.fw-bold.h2(style=\"color: #2f2d74\") Conoce otras iniciativas sustentables de \r\n span.text-primary HIR CASA\r\n .col-md-12.m-1\r\n .row\r\n .col-3.m-2\r\n img(src=\"../assets/img_recicla.png\" style=\"height: 340px\")\r\n p.fw-bold(style=\"color: #2f2d74\") ¿Cómo separar y reciclar la basura en tu hogar nos favorece a todos?\r\n p.text-muted La basura es un contaminante que requiere de atención especial, y depende de nosotros poder ayudar a que ésta la\r\n .d-grid.gap-2: a.btn.btn-outline-primary(href=\"https://hircasa.com.mx/reciclar-en-tu-hogar/\" target=\"_blank\") Continuar leyendo\r\n .col-3.m-2\r\n img(src=\"../assets/img_recicla.png\" style=\"height: 340px\")\r\n p.fw-bold(style=\"color: #2f2d74\") ¿Cómo llevar un estilo de vida sustentable en 2021?\r\n p.text-muted A lo largo de la vida hemos intentado satisfacer nuestras necesidades a costa de la destrucción ecológica, llevando al borde\r\n .d-grid.gap-2: a.btn.btn-outline-primary(href=\"https://hircasa.com.mx/estilo-vida-sustentable/\" target=\"_blank\") Continuar leyendo\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nimport mixinFiltros from \"@/mixins/filtros\";\r\nimport mixinId from \"@/mixins/componentId\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport Swal from \"sweetalert2\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { useStore } from \"@/store\";\r\nimport { mapStores } from \"pinia\";\r\nexport default defineComponent({\r\n mixins: [mixinFiltros, mixinId],\r\n data() {\r\n return {\r\n Cliente: {\r\n programaRecicla: false\r\n } as any\r\n };\r\n },\r\n computed: {\r\n ...mapStores(useStore)\r\n },\r\n methods: {\r\n async ActivarProgramaRecicla() {\r\n // PopUp Login\r\n Swal.fire({\r\n title: \"Para activar esta función debe ingresar su contraseña actual:\",\r\n input: \"password\",\r\n inputAttributes: {\r\n autocapitalize: \"on\"\r\n },\r\n reverseButtons: true,\r\n showCancelButton: true,\r\n cancelButtonText: \"Cancelar\",\r\n confirmButtonText: \"Confirmar\",\r\n confirmButtonColor: \"#ffa000\",\r\n showLoaderOnConfirm: true,\r\n preConfirm: async (login) => {\r\n if (!login || login.length == 0) {\r\n this.baseStore.agregarToast({ tipo: TipoBootstrap.DANGER, body: \"Campo Requerido\" });\r\n return;\r\n }\r\n let r = await api.Cliente.Cliente.ProgramaReclicaApi.LoginConSesion(login);\r\n this.baseStore.agregarToast({ tipo: r.data.estado, body: r.data.mensaje! });\r\n if (r.data.estado == \"OK\") {\r\n let data = await api.Cliente.Cliente.ProgramaReclicaApi.ActivarProgramaRecicla(\r\n this.Cliente.programaRecicla\r\n );\r\n this.baseStore.agregarToast({ tipo: data.data.estado, body: data.data.mensaje! });\r\n }\r\n },\r\n allowOutsideClick: () => !Swal.isLoading()\r\n });\r\n }\r\n },\r\n async mounted() {\r\n let r = await api.Cliente.Cliente.ProgramaReclicaApi.ObtenerClienteProgramaRecicla();\r\n this.Cliente.programaRecicla = r.data.data.programaRecicla;\r\n }\r\n});\r\n</script>\r\n","export default \"__VITE_ASSET__c4dac470__\"","export default \"__VITE_ASSET__9790e9e5__\"","export default \"__VITE_ASSET__11e7d1ad__\"","export default \"__VITE_ASSET__a1230551__\"","export default \"__VITE_ASSET__df398ef0__\"","export default \"__VITE_ASSET__984df369__\"","export default \"__VITE_ASSET__af66a785__\"","export default \"__VITE_ASSET__f40a0ace__\"","export default \"__VITE_ASSET__d1531770__\"","export default \"__VITE_ASSET__3e334966__\"","export default \"__VITE_ASSET__2cc4a551__\"","export default \"__VITE_ASSET__4187b1d7__\"","export default \"__VITE_ASSET__0973db0f__\"","export default \"__VITE_ASSET__b602ada5__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-12: .Principal(style=\"height: 550px\")\r\n .row.justify-content-md-start\r\n .col-md-4.m-4: .card.mb-2(style=\"border-radius: 25px\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n p.text-white.text-center.fw-bold.HirH1 Liquidación de Contratos\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body.p-5(style=\"border-radius: 15px\"): .d-flex\r\n .flex-fill\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") ¿Estás a punto de cubrir la totalidad de las cuotas de tu financiamiento?\r\n p.fs-5.mt-4(style=\"color: #2f2d74\") En este video encontrarás todas las recomendaciones para que liquides tus contratos de forma anticipada y disfrutes el inmueble de tus sueños\r\n div <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/DU_MMyBKRKk\" title=\"YouTube video player\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\r\n .col-md-12.px-5: p.HirH2.text-center.mt-4 Si deseas liquidar tu(s) contrato(s) de forma anticipada, ponemos a tu disposicioÌn las siguientes <strong>recomendaciones</strong>:\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-3: img(src=\"../assets/i_liquidacion_01.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-3: img(src=\"../assets/i_liquidacion_02.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-3: img(src=\"../assets/i_liquidacion_03.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-3: img(src=\"../assets/i_liquidacion_04.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-3: p.HirH4.fw-bold.text-center Contáctanos\r\n .col-md-3: p.HirH4.fw-bold.text-center Efectúa tu Pago\r\n .col-md-3: p.HirH4.fw-bold.text-center Pago confirmado\r\n .col-md-3: p.HirH4.fw-bold.text-center Liberación de Hipoteca\r\n .col-md-3\r\n p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Solicita la emisión de tu cálculo para la liquidación anticipada.\r\n p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") WhatsApp: 55 7665 9885\r\n p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") 55 5511 9910 Opc. 0 - 2.\r\n p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") atencionaclientes@hircasa.com.mx\r\n .col-md-3: p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") En el cálculo de la liquidación podrás visualizar el monto y los datos bancarios para pagar.\r\n .col-md-3: p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Una vez reflejado el pago total de las cuotas, puedes dar inicio al trámite de liberación de hipoteca.\r\n .col-md-3\r\n p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Para la emisión de tu carta de liberación debes proporcionarnos los siguientes datos:\r\n ol(type=\"1\")\r\n li: p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Número de NotarÃa.\r\n li: p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Localidad de inmueble.\r\n li: p.HirP.text-muted(style=\"text-align: justify; text-justify: inter-word\") Nombre del Notario.\r\n .col-md-12: .row\r\n .col-md-6: .mt-4.card(style=\"border-radius: 15px; background-color: rgb(89, 53, 223)\"): .card-body(style=\"border-radius: 15px\")\r\n p.HirH2.fw-bold.text-center.text-white Liberación de hipoteca\r\n p.HirH4.text-white(style=\"text-align: justify; text-justify: inter-word\") En \r\n span.text-primary.fw-bold HIR Casa \r\n | estamos contentos porque hemos llegado juntos a la etapa final de tu financiamiento.\r\n p.HirH4.text-white(style=\"text-align: justify; text-justify: inter-word\") Te sugerimos tomar en cuenta los siguientes puntos para la cancelación de tu hipoteca:\r\n ol.list-group(start=\"1\" type=\"1\")\r\n li.list-group-item.active.text-white.HirC(style=\"border-radius: 15px\") 1.- Cotiza tu trámite.\r\n li.list-group-item.mt-2.text-white.HirC(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 2.- Proporciona tus datos.\r\n li.list-group-item.mt-2.text-white.HirC(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 3.- Seguimiento con notarÃa.\r\n li.list-group-item.mt-2.text-white.HirC(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 4.- Entrega\r\n .col-md-6: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-12.mt-2\r\n .col-md-12: img(src=\"../assets/i_cotizatramite.svg\" style=\"margin: 10px auto; display: block\" @click.prevent=\"mostrarPopUp()\")\r\n .col-md-12.mt-4\r\n //- Modal de Estados de Cuentas\r\n #NotariaModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-body\r\n p.m-2.text-center.h2(style=\"color: #34189a; font-weight: bold\") Notarias\r\n .row.justify-content-md-center: .col-md-7: Slider-Carousel(\r\n :ImagenesProp=\"['img/notarias/01_notaria.png', 'img/notarias/02_notaria.png', 'img/notarias/03_notaria.png', 'img/notarias/04_notaria.png', 'img/notarias/05_notaria.png', 'img/notarias/06_notaria.png', 'img/notarias/07_notaria.png', 'img/notarias/08_notaria.png', 'img/notarias/09_notaria.png', 'img/notarias/10_notaria.png']\"\r\n )\r\n .modal-footer\r\n button.btn.btn-primary.text-white.fw-bold(data-dismiss=\"modal\" @click=\"ocultarPopUp()\") Cerrar\r\n .col-md-12.mt-4\r\n .col-md-12: p.text-center.text-muted.HirC Investiga con la Notaria de tu preferencia el costo del trámite de liberación.\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12: p.text-center.text-muted.HirC En algunas localidades podemos recomendarte Notarias con las cuales tenemos convenio.\r\n .col-md-12.mt-4\r\n .col-md-12: br\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { onMounted } from \"vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\nlet notarias = null as null | bootstrap.Modal;\r\nfunction ocultarPopUp() {\r\n notarias?.hide();\r\n}\r\nfunction mostrarPopUp() {\r\n notarias?.show();\r\n}\r\nonMounted(async () => {\r\n notarias = new bootstrap.Modal(document.querySelector(\"#NotariaModal\") as HTMLDivElement);\r\n});\r\n</script>\r\n<style scoped>\r\n.Principal {\r\n background-image: url(\"../assets/img_liquidacion_principal.jpg\");\r\n width: 100%;\r\n}\r\n.HirH1 {\r\n font-size: 40px;\r\n color: #2f2d74;\r\n}\r\n.HirH2 {\r\n font-size: 36px;\r\n color: #2f2d74;\r\n}\r\n.HirH3 {\r\n font-size: 28px;\r\n color: #2f2d74;\r\n}\r\n.HirH4 {\r\n font-size: 24px;\r\n color: #2f2d74;\r\n}\r\n.HirH5 {\r\n font-size: 18px;\r\n color: #2f2d74;\r\n}\r\n.HirH6 {\r\n font-size: 14px;\r\n color: #2f2d74;\r\n}\r\n.HirP {\r\n font-size: 16px;\r\n color: #2f2d74;\r\n}\r\n.HirC {\r\n font-size: 20px;\r\n color: white;\r\n}\r\n</style>\r\n","export default \"__VITE_ASSET__3dfddc11__\"","export default \"__VITE_ASSET__508d956f__\"","export default \"__VITE_ASSET__45751dbd__\"","export default \"__VITE_ASSET__9f0b7596__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3\r\n .row\r\n .col-md-12: .Principal(style=\"height: 500px; margin: 0 auto\")\r\n .col-md-5(style=\"padding: 230px 0 0 40px\"): .card.mb-2(style=\"border-radius: 25px; border: none\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n p.text-white.fw-bold.fs-2(style=\"padding: 20px 0 0 10px\") Titulación\r\n p.text-white.fw-bold.fs-5(style=\"padding: 0 0 0 10px; margin-top: -5px\") ¡FELICIDADES!\r\n p.text-white.fw-bold.fs-5(style=\"padding: 0 0 0 10px; margin-top: -15px\") ¡Has adjudicado tus contratos!\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .d-flex\r\n .flex-fill\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") Conoce toda la información de titulación\r\n p.fs-5.mt-4(style=\"color: #2f2d74\") Estas muy cerca de concretar tu sueño, por ello hemos preparado este vÃdeo con toda la información para llevar a cabo tu proceso de titulación.\r\n p.fs-5.mt-4(style=\"color: #2f2d74\") Recuerda que si deseas asesorÃa especÃfica, puedes contactarnos.\r\n div <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/ct4RgHo0NbA\" title=\"YouTube video player\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\r\n .row(style=\"background-color: white; margin: 70px auto 0 auto; width: 90%; border-radius: 20px\")\r\n .col-md-4\r\n img(src=\"../assets/img_domiciliar.png\" style=\"width: 450px; height: 450px; border-radius: 250px; padding: 50px 25px\")\r\n .col-md-1\r\n .col-md-7\r\n .row(style=\"margin-top: 40px\")\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 40px; height: 40px; border-radius: 20px\")\r\n p.text-center.fw-bold.text-white(style=\"padding-top: 6px\") 1\r\n .col-md-9\r\n p.fw-bold(style=\"margin-top: 5px\") Identifica el proyecto que vas a realizar\r\n .row\r\n .col-md-12\r\n .row(style=\"margin: 10px 0px 5px 20px\")\r\n .col-md-3.justify-content-center.text-center\r\n img(src=\"../assets/i_comprar.svg\")\r\n p.fw-bold(style=\"margin-top: 10px\") Comprar\r\n .col-md-3.justify-content-center.text-center\r\n img(src=\"../assets/i_construir.svg\")\r\n p.fw-bold(style=\"margin-top: 10px\") Construir\r\n .col-md-3.justify-content-center.text-center\r\n img(src=\"../assets/i_remodelar.svg\")\r\n p.fw-bold(style=\"margin-top: 10px\") Remodelar\r\n .row(style=\"margin-top: 20px\")\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 40px; height: 40px; border-radius: 20px\")\r\n p.text-center.fw-bold.text-white(style=\"padding-top: 6px\") 2\r\n .col-md-9\r\n p.fw-bold(style=\"margin-top: 5px\") Consulta la \r\n a.text-primary(style=\"text-decoration: underline\" :href=\"URL\" target=\"_blank\") GuÃa de adjudicación \r\n | para conocer los requisitos puntuales de tu proyecto.\r\n .row(style=\"margin-top: 30px\")\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 40px; height: 40px; border-radius: 20px\")\r\n p.text-center.fw-bold.text-white(style=\"padding-top: 6px\") 3\r\n .col-md-9\r\n p.fw-bold(style=\"margin-top: 5px\") Cumplidos y actualizando los requisitos, estaremos listos para iniciar tu trámite con la NotarÃa, una vez finalizado el proceso de análisis, podemos programar tu firma de escritura.\r\n .row(style=\"background-color: rgb(89, 53, 223); margin: 20px auto; width: 90%; border-radius: 30px\")\r\n .row(style=\"text-align: center; margin: 20px 0 20px 0\")\r\n p.fw-bold.text-white ¿Alguna duda con tu proceso? Contáctanos\r\n .row(style=\"padding: 0 0 20px 120px\")\r\n .col-md-4\r\n .row\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 60px; height: 60px; border-radius: 30px\")\r\n i.fab.fa-whatsapp.fa-3x(style=\"color: white; margin: 5px 0 0 -2px\") \r\n .col-md-5\r\n p.fw-bold.text-white(style=\"margin-top: 7px\") 55.7665.9885\r\n p.fw-bold.text-white(style=\"margin-top: -15px\") opción 2\r\n .col-md-4\r\n .row\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 60px; height: 60px; border-radius: 30px\")\r\n i.fas.fa-phone-alt.fa-2x(style=\"color: white; margin: 12px 0 0 3px\") \r\n .col-md-5\r\n p.fw-bold.text-white(style=\"margin-top: 20px\") 55.5511.9910\r\n .col-md-4\r\n .row\r\n .col-md-3(style=\"background-color: rgb(235, 129, 19); width: 60px; height: 60px; border-radius: 30px\")\r\n i.far.fa-envelope.fa-2x(style=\"color: white; margin: 13px 0 0 3px\") \r\n .col-md-5\r\n p.fw-bold.text-white(style=\"margin-top: 20px\") titulacion@hircasa.com.mx\r\n .row(style=\"text-align: center; margin: 30px 0\")\r\n p.fw-bold.fs-2 ¡Estás a un paso de vivir tu sueño!\r\n</template>\r\n\r\n<style scoped>\r\n.Principal {\r\n background-image: url(\"../assets/img_titulacion_principal.jpg\");\r\n width: 100%;\r\n}\r\n</style>\r\n<script lang=\"ts\" setup>\r\nimport { ref, reactive, toRefs, onMounted } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nconst URL = ref((import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\"));\r\nonMounted(async () => {\r\n URL.value += api.Cliente.Cliente.HomeApi.ObtenerArchivoPublicoUrl + \"?ruta=guia-adjudicatario.pdf\";\r\n});\r\n</script>\r\n","export default \"__VITE_ASSET__6ce7308f__\"","export default \"__VITE_ASSET__5a17b8e3__\"","export default \"__VITE_ASSET__b33adf65__\"","export default \"__VITE_ASSET__0cf1b6ff__\"","export default \"__VITE_ASSET__88f014d7__\"","export default \"__VITE_ASSET__b0173585__\"","export default \"__VITE_ASSET__0d3518a9__\"","export default \"__VITE_ASSET__837de017__\"","export default \"__VITE_ASSET__e0fcd8f1__\"","export default \"__VITE_ASSET__0e32e5a8__\"","export default \"__VITE_ASSET__5ef4817e__\"","export default \"__VITE_ASSET__e5b5e454__\"","export default \"__VITE_ASSET__4e3b2cba__\"","<template lang=\"pug\">\r\n.carousel.slide.d-inline-block(data-ride=\"carousel\" style=\"width: 100%; height: 300px; max-width: 100%\" :id=\"componentId + 'banners'\")\r\n .carousel-indicators(v-if=\"Imaganes.length > 1\")\r\n button.active(\r\n v-for=\"(item, i) in Imaganes\"\r\n type=\"button\"\r\n :class=\"{ active: i == 0 }\"\r\n :data-bs-target=\"'#' + componentId + 'banners'\"\r\n :data-bs-slide-to=\"i\"\r\n )\r\n .carousel-inner: .carousel-item(v-for=\"(item, i) in Imaganes\" :class=\"{ active: i == 0 }\")\r\n img.d-block.w-100.img-rounded(v-bind:src=\"item.toString()\" width=\"600\" height=\"300\")\r\n template(v-if=\"Imaganes.length > 1\")\r\n button.carousel-control-prev(type=\"button\" :data-bs-target=\"'#' + componentId + 'banners'\" data-bs-slide=\"prev\")\r\n span.carousel-control-prev-icon\r\n span.visually-hidden Anterior\r\n button.carousel-control-next(type=\"button\" :data-bs-target=\"'#' + componentId + 'banners'\" data-bs-slide=\"next\")\r\n span.carousel-control-next-icon\r\n span.visually-hidden Siguiente\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\nconst props = defineProps({\r\n ImagenesProp: { type: Array, default: null }\r\n});\r\nconst Imaganes = ref([] as string[]);\r\nconst componentId = utilidades.generarId();\r\nonMounted(() => {\r\n Imaganes.value = props.ImagenesProp as string[];\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-12: .Principal(style=\"height: 350px\")\r\n .row.justify-content-md-start\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-4.m-4: .card.mb-2(style=\"border-radius: 25px\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n p.text-white.text-center.fw-bold.HirH1 Liberación de Hipoteca\r\n p.text-white.HirH5(style=\"text-align: justify\") ¡Felicidades! Ahora que tu financiamiento es momento de liberar la garantÃa registrada sobre tu inmueble.\r\n .col-md-12: p.HirH2.fw-bold.text-center.mt-4 En \r\n span.fw-bold.text-primary HIR Casa \r\n | estamos muy contentos porque hemos llegado juntos a la etapa final de tu financiamiento.\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body.p-5(style=\"border-radius: 15px\"): .d-flex\r\n .flex-fill.pe-3\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") Conoce toda la información para la liberación de tu hipoteca\r\n p.fs-5.mt-4(style=\"color: #2f2d74\") Hemos preparado este video con toda la información para que conozcas paso a paso cómo realizar la liberación.\r\n p.fs-5.mt-4(style=\"color: #2f2d74\") Recuerda que sà deseas asesorÃa especÃfica puedes contactarnos\r\n div <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/DU_MMyBKRKk\" title=\"YouTube video player\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\r\n .col-md-12: .row\r\n .col-md-6: .mt-4.card(style=\"border-radius: 15px; background-color: #2f2d74\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-12: p.HirH3.fw-bold.text-center.text-white Te sugerimos tomar en cuenta los siguientes puntos.\r\n .col-md-12.mt-4\r\n .col-md-12\r\n ol.list-group(start=\"1\" type=\"1\")\r\n li.list-group-item.active.text-white.HirP(style=\"border-radius: 15px\") 1.- Cotiza tu trámite.\r\n li.list-group-item.mt-2.text-white.HirP(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 2.- Proporciona tus datos.\r\n li.list-group-item.mt-2.text-white.HirP(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 3.- Seguimiento con notaria.\r\n li.list-group-item.mt-2.text-white.HirP(style=\"border-radius: 15px; background-color: transparent; border-style: none\") 4.- Entrega\r\n .col-md-12.mt-4\r\n .col-md-6: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-12: img(src=\"../assets/i_cotizatramite.svg\" style=\"margin: 10px auto; display: block\" @click.prevent=\"mostrarPopUp()\")\r\n //- Modal de Estados de Cuentas\r\n #NotariaModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-body\r\n p.m-2.text-center.h2(style=\"color: #34189a; font-weight: bold\") Notarias\r\n .row.justify-content-md-center: .col-md-7: Slider-Carousel(\r\n :ImagenesProp=\"['img/notarias/01_notaria.png', 'img/notarias/02_notaria.png', 'img/notarias/03_notaria.png', 'img/notarias/04_notaria.png', 'img/notarias/05_notaria.png', 'img/notarias/06_notaria.png', 'img/notarias/07_notaria.png', 'img/notarias/08_notaria.png', 'img/notarias/09_notaria.png', 'img/notarias/10_notaria.png']\"\r\n )\r\n .modal-footer\r\n button.btn.btn-primary.text-white.fw-bold(data-dismiss=\"modal\" @click=\"ocultarPopUp()\") Cerrar\r\n .col-md-12: p.text-center.text-muted.fs-5 Investiga con la Notaria de tu preferencia el costo del trámite de liberación.\r\n .col-md-12: p.text-center.text-muted.fs-5 En algunas localidades podemos recomendarte Notarias con las cuales tenemos convenio.\r\n .col-md-12.mt-4\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted } from \"vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport SliderCarousel from \"../components/SliderCarousel.vue\";\r\nlet notarias = null as null | bootstrap.Modal;\r\nfunction ocultarPopUp() {\r\n notarias?.hide();\r\n}\r\nfunction mostrarPopUp() {\r\n notarias?.show();\r\n}\r\nonMounted(async () => {\r\n notarias = new bootstrap.Modal(document.querySelector(\"#NotariaModal\") as HTMLDivElement);\r\n});\r\n</script>\r\n<style scoped>\r\n.Principal {\r\n background-image: url(\"../assets/img_liberacion_principal.jpg\");\r\n width: 100%;\r\n}\r\n.HirH1 {\r\n font-size: 40px;\r\n color: #2f2d74;\r\n}\r\n.HirH2 {\r\n font-size: 36px;\r\n color: #2f2d74;\r\n}\r\n.HirH3 {\r\n font-size: 28px;\r\n color: #2f2d74;\r\n}\r\n.HirH4 {\r\n font-size: 24px;\r\n color: #2f2d74;\r\n}\r\n.HirH5 {\r\n font-size: 18px;\r\n color: #2f2d74;\r\n}\r\n.HirH6 {\r\n font-size: 14px;\r\n color: #2f2d74;\r\n}\r\n.HirP {\r\n font-size: 20px;\r\n color: white;\r\n}\r\n</style>\r\n","export default \"__VITE_ASSET__7b2551b0__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-12: .Principal(style=\"height: 400px\")\r\n .row.justify-content-md-start\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-4.m-4: .card.mb-2(style=\"border-radius: 25px\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n p.text-white.text-center.fw-bold.fs-2 Preventas\r\n p.text-white(style=\"text-align: justify; font-size: 14px\") Estás interesado en adquirir un inmueble que se encuentra en preventa. ¡Con nosotros puedes hacer realidad ese sueño!\r\n p.text-white(style=\"text-align: justify; font-size: 14px\") El enganche que proporciones a la inmobiliaria se puede considerar como aportaciones para la adquisición de tu inmueble.\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .d-flex\r\n .flex-fill\r\n p.fs-2.fw-bold(style=\"color: #2f2d74\") ¿Puedo adquirir un inmueble en preventa con mi Financiamiento?\r\n p.text-muted Claro, en este video encontrarás toda la información para adquirir ese inmueble que tanto deseas en Preventa.\r\n div <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/XlR7jZnpsps\" title=\"YouTube video player\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\t\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-4.m-4: img(src=\"../assets/img_preventa.png\" style=\"margin: 10px auto; display: block\")\r\n .col-md-6: .row\r\n .col-md-12: p.fs-2.fw-bold(style=\"color: #2f2d74\") Es muy sencillo, deberemos dar los siguientes pasos:\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 1\r\n .col-md-11: p.text-muted Se llevará a cabo una validación de tus capacidades de pago para poder realizar tu contratación (comprobantes de ingresos y revisaremos el buró de crédito).\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 2\r\n .col-md-11: p.text-muted Deberás de compartirnos los comprobantes de pago a la inmobiliaria fehacientes (transferencias y/o depósitos) y avalúo bancario.\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 3\r\n .col-md-11: p.text-muted En cuanto tu operación esté lista para fondeo, firmarás un “mutuo†\r\n a.btn-link(\r\n href=\"javascript:void();\"\r\n data-bs-toggle=\"tooltip\"\r\n title=\"El mutuo hipotecario es un préstamo hipotecario que se otorga para la adquisición, ampliación, reparación o construcción de una propiedad; compra de sitios, oficinas o locales comerciales; refinanciamiento de mutuos hipotecarios o préstamos para fines generales\"\r\n data-bs-html=\"true\"\r\n ): img(\r\n src=\"../assets/Interrogacion.svg\"\r\n )\r\n | . Para que pueda ser fondeada tu operación.\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 4\r\n .col-md-11: p.text-muted Una vez completado tu expediente y autorizada tu adjudicación, programaremos la firma de tu escritura en 15 dÃas.\r\n .col-md-12: p.fs-2.fw-bold.text-center(style=\"color: #2f2d74\") ¡Listo! ¡Eres dueño del hogar que siempre soñaste!\r\n .col-md-12: p.fs-2.fw-bold.text-center(style=\"color: #2f2d74\") ¿Tienes alguna duda? \r\n span.text-primary.fw-bold Contáctanos\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { onMounted } from \"vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\nonMounted(() => {\r\n let tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle=\"tooltip\"]'));\r\n tooltipTriggerList.map(function (tooltipTriggerEl) {\r\n return new bootstrap.Tooltip(tooltipTriggerEl);\r\n });\r\n});\r\n</script>\r\n\r\n<style scoped>\r\n.Principal {\r\n background-image: url(\"../assets/img_preventas_principal.jpg\");\r\n width: 100%;\r\n}\r\n.Circulo {\r\n height: 25px;\r\n width: 25px;\r\n background-color: #fd7e14;\r\n border-radius: 50%;\r\n display: block;\r\n}\r\n</style>\r\n","export default \"__VITE_ASSET__b65b4279__\"","export default \"__VITE_ASSET__5b2acc55__\"","export default \"__VITE_ASSET__4e7f2cfb__\"","export default \"__VITE_ASSET__fe5c2a7a__\"","export default \"__VITE_ASSET__95acf006__\"","export default \"__VITE_ASSET__11d2598b__\"","export default \"__VITE_ASSET__7a5932c8__\"","export default \"__VITE_ASSET__7a979030__\"","export default \"__VITE_ASSET__b5dd7406__\"","export default \"__VITE_ASSET__74e3a628__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-12: .Principal(style=\"height: 500px\")\r\n .row.justify-content-md-start\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-12.mt-4\r\n .col-md-4.m-4: .card.mb-2(style=\"border-radius: 25px\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n p.HirH1.text-white.text-center.fw-bold Pagos\r\n p.text-white.HirH5(style=\"text-align: justify\") ¡Hola! Queremos hacerte más sencilla la realización de tus pagos, te contamos como hacerlo.\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-7\r\n p.HirH2.fw-bold.text-center Conoce toda la información de pagos\r\n p.text-center.text.text-muted Hemos preparado este video con toda la información como dónde puedes realizar tus pagos, manejo de la referencia única y mucho más.\r\n p.text-center.text.text-muted Recuerda que si deseas asesorÃa especifica puedes contactarnos.\r\n .col-md-5\r\n iframe(width=\"100%\" height=\"100%\" src=\"https://www.youtube.com/embed/pcgzz_DhdCM\")\r\n .col-md-12: p.HirH2.fw-bold.text-center.mt-4 Te invitamos a Domiciliar\r\n .col-md-12: p.HirH3.fw-bold.text-center.mt-4 Continúa con tus actividades sin perder más tiempo en trámites, asegura la puntualidad en tus pagos y olvÃdate de hacer filas en el banco. Pagos con cargo automático a tu cuenta.\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px; background-color: rgb(89, 53, 223)\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-4.m-4: img(src=\"../assets/img_domiciliar.png\" style=\"margin: 10px auto; display: block\")\r\n .col-md-6: .row.ps-5\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 1\r\n .col-md-11: p.HirC.text-white Formato domiciliación.\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 2\r\n .col-md-11: p.HirC.text-white Estado de cuenta no mayor a 3 meses con cuenta interbancaria visible.\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 3\r\n .col-md-11: p.HirC.text-white Identificación oficial vigente.\r\n .col-md-12: .row\r\n .col-md-1: .Circulo: p.text-center.text-white 4\r\n .col-md-11: .row\r\n .col-md-12: p.HirC.text-white Agenda cita o envÃa tus documentos.\r\n .col-md-12\r\n p.HirC.text-white Número telefónico: \r\n span.text-white.fw-bold 55 5511 9910 Opc. 2\r\n .col-md-12\r\n p.HirC.text-white WhatsApp: \r\n span.text-white.fw-bold 55 7665 9885 (Solo mensajes).\r\n .col-md-12\r\n p.HirC.text-white Correo Electrónico: \r\n span.text-white.fw-bold atencionaclientes@hircasa.com.mx\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-12: p.HirH2.fw-bold.text-center Formas de Pago\r\n .col-md-12\r\n .row.justify-content-md-center\r\n .col-md-4: img(src=\"../assets/i_pago_01.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-4: img.mt-4(src=\"../assets/i_pago_02.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-4: img.mt-4(src=\"../assets/i_pago_03.svg\" style=\"margin: 10px auto; display: block\")\r\n .row.justify-content-md-center\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center Transferencia Electrónica\r\n p.HirP.mt-4(style=\"text-align: justify; text-justify: inter-word\") Por medio del App o Sitio Web de tu banca; como pago de servicio, pago a terceros SPEI.\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center Establecimiento\r\n p.HirP.mt-4(style=\"text-align: justify; text-justify: inter-word\") Realiza tu pago en 7 Eleven, Chedraui y Telecom, \r\n span.text-muted.fw-bold USANDO EL CONVENIO DE BANORTE \r\n | (aplica costo adicional según el establecimiento)\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center Efectivo o Cheque\r\n p.HirP(style=\"text-align: justify; text-justify: inter-word\") Depositando en la sucursal de tu preferencia, Citibanamex, Banorte, Scotiabank y Santander.\r\n |  En el caso de BBVA podrás realizar el pago a través de practicaja.\r\n\r\n .col-md-12: p.HirH2.fw-bold.text-center.mt-4 Tipos de Pagos\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px; background-color: rgb(89, 53, 223)\"): .card-body(style=\"border-radius: 15px\")\r\n .row.justify-content-md-center\r\n .col-md-4: img(src=\"../assets/i_pagopuntual.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-4: img(src=\"../assets/i_pagoanticipado.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-4: img(src=\"../assets/i_pagomoroso.svg\" style=\"margin: 10px auto; display: block\")\r\n .row.justify-content-md-center\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center.mt-4(style=\"color: white\") Pago Puntual\r\n p.HirP(style=\"color: white; text-align: justify; text-justify: inter-word\") Para mantener un buen historial, efectúa tu pago desde el dÃa 15 del mes corriente, hasta el primer dÃa hábil del siguiente mes.\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center.mt-4(style=\"color: white\") Pago anticipado\r\n p.HirP(style=\"color: white; text-align: justify; text-justify: inter-word\") Una vez cubierta tu cuota mensual puedes anticipar pagos en el momento que lo desees. Recuerda que la cuota será de un valor menor.\r\n p.HirP(style=\"color: white; text-align: justify; text-justify: inter-word\") Esto te ayudará a que el tiempo para obtener tu adjudicación y terminar tu financiamiento se reduzca.\r\n .col-md-4\r\n p.HirH4.fw-bold.text-center.mt-4(style=\"color: white\") Pago Moroso\r\n p.HirP(style=\"color: white; text-align: justify; text-justify: inter-word\") ¡IMPORTANTE! Si no efectúas tu pago para la fecha lÃmite, entrarás en morosidad y o tendrás la cobertura de tus seguros.\r\n .col-md-12: .mt-4.card(style=\"border-radius: 15px\"): .card-body(style=\"border-radius: 15px\"): .row\r\n .col-md-4.m-4: img(src=\"../assets/img_edo_cuenta.png\" style=\"margin: 10px auto; display: block\")\r\n .col-md-6: .row\r\n .col-md-12: p.HirH3.fw-bold Estado de Cuenta\r\n .col-md-12\r\n p.HirP.text-primary(style=\"text-align: justify; text-justify: inter-word\") HIR Casa \r\n span.text-muted emite de forma mensual tu estado de cuenta y un complemento. Puedes recibirlo por \r\n span.text-muted.fw-bold email o de forma fÃsica \r\n span.text-muted en el domicilio registrado.\r\n .col-md-12: p.text-muted.HirP Solicitarlo a través de \r\n span.text-muted.fw-bold WhatsApp 55 7665 9885, en www.hircasa.com.mx o llamando al 55 5511 9910 Opc. 2\r\n .col-md-12: .row\r\n .col-md-4.m-auto: .mt-4.card(style=\"border-radius: 15px; background-color: #fd7e14\"): a.card-body.text-decoration-none(\r\n style=\"border-radius: 15px\"\r\n href=\"#\"\r\n @click.prevent=\"mostrarPopUp()\"\r\n ): .row\r\n .col-md-12: img(src=\"../assets/leer_edo_cuenta.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-12: p.fs-6.fw-bold.text-center.mt-4(style=\"color: white\") Aprende a leer tu estado de cuenta\r\n //- Modal de Estados de Cuentas\r\n .col-md-4.m-auto: .mt-4.card(style=\"border-radius: 15px; background-color: #fd7e14\"): router-link.text-decoration-none.card-body(\r\n :to=\"{ name: 'cliente-cliente-financiamiento' }\"\r\n style=\"border-radius: 15px\"\r\n ): .row\r\n .col-md-12: img(src=\"../assets/consultar_edo_cuenta.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-12: p.fs-6.fw-bold.text-center.mt-4(style=\"color: white\") Consulta tu ultimó estado de cuenta.\r\n .col-md-4.m-auto: .mt-4.card(style=\"border-radius: 15px; background-color: #198754\"): router-link.text-decoration-none.card-body(\r\n :to=\"{ name: 'cliente-cliente-programa-recicla' }\"\r\n style=\"border-radius: 15px\"\r\n ): .row\r\n .col-md-12: img(src=\"../assets/recicla.svg\" style=\"margin: 10px auto; display: block\")\r\n .col-md-12: p.fw-bold.text-center.mt-4(style=\"color: white; font-size: 10px\") Comprometidos con el medio ambiente puedes sumarte a nuestro programa recicla.\r\n #estadoCuentaModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-100.w-75(role=\"document\")\r\n .modal-content\r\n .modal-body\r\n p.m-2.text-center.h2(style=\"color: #34189a; font-weight: bold\") ¿Como leer tu Estado de Cuenta?\r\n .row.justify-content-md-center: .col-md-7: Slider-Carousel(\r\n :ImagenesProp=\"['img/slider/01.jpg', 'img/slider/02.jpg', 'img/slider/03.jpg', 'img/slider/04.jpg', 'img/slider/05.jpg', 'img/slider/06.jpg', 'img/slider/07.jpg', 'img/slider/08.jpg', 'img/slider/09.jpg', 'img/slider/10.jpg', 'img/slider/11.jpg', 'img/slider/12.jpg', 'img/slider/13.jpg', 'img/slider/14.jpg', 'img/slider/15.jpg']\"\r\n )\r\n .modal-footer\r\n button.btn.btn-primary.text-white.fw-bold(data-dismiss=\"modal\" @click=\"ocultarPopUp()\") Cerrar\r\n</template>\r\n<style scoped>\r\n.Principal {\r\n background-image: url(\"../assets/img_pagos_principal.jpg\");\r\n width: 100%;\r\n}\r\n\r\n.Circulo {\r\n height: 25px;\r\n width: 25px;\r\n background-color: #fd7e14;\r\n border-radius: 50%;\r\n display: block;\r\n}\r\n\r\n.HirH1 {\r\n font-size: 40px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirH2 {\r\n font-size: 36px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirH3 {\r\n font-size: 28px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirH4 {\r\n font-size: 24px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirH5 {\r\n font-size: 18px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirH6 {\r\n font-size: 14px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirP {\r\n font-size: 16px;\r\n color: #2f2d74;\r\n}\r\n\r\n.HirC {\r\n font-size: 20px;\r\n color: white;\r\n}\r\n</style>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport SliderCarousel from \"../components/SliderCarousel.vue\";\r\nconst URL = ref(\"\");\r\nlet estadoCuentaDescuentos = null as null | bootstrap.Modal;\r\nfunction ocultarPopUp() {\r\n estadoCuentaDescuentos?.hide();\r\n}\r\nfunction mostrarPopUp() {\r\n estadoCuentaDescuentos?.show();\r\n}\r\nonMounted(async () => {\r\n URL.value =\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.HomeApi.ObtenerArchivoPublicoUrl +\r\n \"?archivo=guia_adjudicatario.pdf\";\r\n estadoCuentaDescuentos = new bootstrap.Modal(document.querySelector(\"#estadoCuentaModal\") as HTMLDivElement);\r\n});\r\n</script>\r\n","export default \"__VITE_ASSET__fcc9bf75__\"","export default \"__VITE_ASSET__85db9613__\"","<template lang=\"pug\">\r\n.container.ff-poppins.pb-4(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2\r\n .col-md-6.mt-2(style=\"margin-left: -50px\")\r\n .row: .col-md-12\r\n p.h1.fw-bold(style=\"color: #34189a\") Seguro de Daños\r\n p.h5(style=\"color: #6e7599; margin: 50px 0 40px 0\") Para garantizar el cumplimiento del compromiso adquirido con HIR Casa, \r\n span.h5.fw-bold(style=\"color: #6e7599\") estás protegido  \r\n | con un moderno Plan de Seguro.\r\n .row: .col-md-12\r\n p.h1.fw-bold(v-if=\"seguro == 'ZURICH COMPAÑÃA DE SEGUROS SA'\" style=\"color: #34189a\") Cobertura\r\n .row.text-center.mt-3.mb-4\r\n .col\r\n img(src=\"../assets/i_hogar_cobertura.svg\" alt=\"Incendio\")\r\n p.py-1.fw-bold(v-if=\"seguro == 'ZURICH COMPAÑÃA DE SEGUROS SA'\" style=\"color: #34189a\") Hogar\r\n a.fw-bold(\r\n style=\"width: 200px; text-align: center; text-decoration: none; margin: auto; padding: 10px; border-radius: 15px; color: white; background-color: #eb8113; border: none\"\r\n href=\"cliente/cliente/pdf/infografia_hogar.pdf\"\r\n target=\"_blank\"\r\n ) Conoce más\r\n .col\r\n img(src=\"../assets/i_oficinas_cobertura.svg\" alt=\"Incendio\")\r\n p.py-1.fw-bold(v-if=\"seguro == 'ZURICH COMPAÑÃA DE SEGUROS SA'\" style=\"color: #34189a\") Locales comerciales y oficinas\r\n a.fw-bold(\r\n style=\"width: 200px; text-align: center; text-decoration: none; margin: auto; padding: 10px; border-radius: 15px; color: white; background-color: #eb8113; border: none\"\r\n href=\"cliente/cliente/pdf/infografia_oficinas.pdf\"\r\n target=\"_blank\"\r\n ) Conoce más\r\n\r\n .col-md-6.mt-2(v-if=\"seguro == 'ZURICH COMPAÑÃA DE SEGUROS SA'\" style=\"margin-left: 50px\"): p.h1.fw-bold(style=\"color: #34189a\") Mis Seguros\r\n .row: .col.pt-4.pb-4\r\n template(v-for=\"(item, i) in garantias\" :key=\"item\")\r\n .accordion.mb-4.shadow(:id=\"componentId + 'acordion'\")\r\n .accordion-item\r\n h2.accordion-header: button.accordion-button.fw-bold(data-bs-toggle=\"collapse\" :data-bs-target=\"'#' + componentId + 'segurodanios' + i\"): p.text-muted {{ item.alias }}\r\n .accordion-collapse.collapse.show(:id=\"componentId + 'segurodanios' + i\" :data-bs-parent=\"'#' + componentId + 'acordion'\"): .accordion-body: .row\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Tipo de Inmueble:\r\n p(style=\"font-size: 12px\") {{ item.productoContratado.toString().replace(/_/g, \" \") }}\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Fecha de Escrituración:\r\n p(style=\"font-size: 12px\") {{ DateTime.fromISO(item.fechaAvaluo || \"\").toFormat(\"dd/MM/yyyy\") }}\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Dirección:\r\n p(style=\"font-size: 12px\") {{ item.calle }}\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Estás asegurado con:\r\n p(style=\"font-size: 12px\") {{ item.aseguradora }}\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Porcentaje:\r\n p(style=\"font-size: 12px\") {{ item.porcentaje }} %\r\n .col-md-6\r\n p.text-muted(style=\"font-size: 14px\") Monto:\r\n p(style=\"font-size: 12px\") {{ filtros.filtroDivisa(item.monto) }}\r\n .col-md-12\r\n a.btn.btn-primary.text-white(\r\n v-if=\"item.ruta != ''\"\r\n :href=\"ObtenerCertificadoDanios(item.ruta || '')\"\r\n :title=\"'Descargar Certificado de Daños - ' + item.ruta\"\r\n target=\"_blank\"\r\n ) Descargar Certificado Daños\r\n</template>\r\n\r\n<style lang=\"sass\">\r\n.modal-overlay\r\n position: absolute\r\n top: 0\r\n left: 0\r\n bottom: 0\r\n right: 0\r\n z-index: 100\r\n height: 160%\r\n width: 100%\r\n background: rgba(0,0,0,0.4)\r\n</style>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted, nextTick } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { DateTime } from \"luxon\";\r\nimport { Cliente } from \"@/servicios/api\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport filtros from \"@/composables/filtros\";\r\nconst garantias = ref([] as Cliente.Financiamiento.GarantiaAdministradaDetalle[]);\r\n\r\nconst componentId = utilidades.generarId();\r\nconst formularioValidado = true;\r\nconst seguro = ref(\"\" as string | undefined);\r\n\r\nonMounted(async () => {\r\n api.Cliente.Cliente.SeguroApi.AgruparGarantias().then(resp => {\r\n garantias.value = resp.data as Cliente.Financiamiento.GarantiaAdministradaDetalle[];\r\n seguro.value = garantias.value[0].aseguradora;\r\n });\r\n await nextTick();\r\n});\r\n//# Metodos\r\nfunction ObtenerCertificadoDanios(path: string): string {\r\n let URL =\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") + api.Cliente.Cliente.SeguroApi.ObtenerArchivoUrl + \"?ruta=\";\r\n return URL + path;\r\n}\r\n</script>\r\n\r\n","<template lang=\"pug\">\r\n.card: .card-body\r\n .row\r\n .col-md-12: p.fw-bold.h3(style=\"color: #2f2d74\") Cargar Documentación\r\n .col-md-12: .row\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Descarga y llena el \r\n a.text-primary.fw-bold.text-decoration-underline(href=\"cliente/cliente/pdf/formato/ReclamacionVida.pdf\" target=\"_ blank\") Formato de Reclamación Vida \r\n span con firma autógrafa\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 0)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(0)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(0)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia certificada del acta de defunción\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 1)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(1)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(1)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia certificada del acta de nacimiento del asegurado y beneficiarios\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 2)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(2)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(2)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia simple del certificado de defunción\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 3)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(3)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(3)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de identificación oficial del asegurado y beneficiarios\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 4)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(4)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(4)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de comprobante de domicilio del asegurado y beneficiarios\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 5)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(5)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(5)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia certificada del acta de matrimonio(En Caso de Aplicar)\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 6)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(6)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(6)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" :id=\"componentId + 'menorEdad'\" :name=\"componentId + 'menorEdad'\" :value=\"1\" v-model=\"opcionales\")\r\n label.form-check-label(:for=\"componentId + 'menorEdad'\" style=\"color: #2f2d74\") El Beneficiario es menor de edad\r\n p(style=\"color: #2f2d74\" v-if=\"mostrarMenor\") Carta del tutor legal solicitando el pago en representación del menor\r\n .col-md-2: label.btn.btn-primary.text-white(v-if=\"mostrarMenor\")\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 7)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(7)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(7)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2\r\n .form-check.form-check-inline\r\n input.form-check-input(\r\n type=\"checkbox\"\r\n :id=\"componentId + 'muerteAccidental'\"\r\n :name=\"componentId + 'muerteAccidental'\"\r\n :value=\"2\"\r\n v-model=\"opcionales\"\r\n )\r\n label.form-check-label(:for=\"componentId + 'muerteAccidental'\" style=\"color: #2f2d74\") Muerte Accidental\r\n p(style=\"color: #2f2d74\" v-if=\"mostrarMuerte\") Actuaciones completas ante el ministerio público con reconocimiento de cuerpo, necropsia y estudios toxicológicos.\r\n .col-md-2.mt-2: label.btn.btn-primary.text-white(v-if=\"mostrarMuerte\")\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" @change=\"guardarDocuemento($event, 8)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(8)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(8)\" target=\"_blank\") Ver\r\n .col-md-5\r\n .col-md-2: p.text-center.btn.btn-primary.bg-primary.text-white(@click=\"enviarNotificacion()\") Enviar Documentos\r\n .col-md-5\r\n Spinner-Loader#spinner(name=\"spinner\")\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted, watch, nextTick } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"@/store\";\r\nimport type { Cliente } from \"@/servicios/api\";\r\nconst $store = useStore();\r\nconst componentId = utilidades.generarId();\r\nconst mostrarMenor = ref(false);\r\nconst mostrarMuerte = ref(false);\r\nconst opcionales = ref([] as number[]);\r\nconst documentosVida = ref([] as Cliente.Cliente.Siniestro.ListaDocumentos[]);\r\n//#endregion Props\r\ninterface Props {\r\n Siniestro: Cliente.Cliente.Siniestro.ListaDocumentos[];\r\n}\r\nconst props = withDefaults(defineProps<Props>(), {\r\n Siniestro: () => []\r\n});\r\nwatch(opcionales, () => {\r\n mostrarMenor.value = opcionales.value.includes(1);\r\n mostrarMuerte.value = opcionales.value.includes(2);\r\n});\r\nfunction mostrarDocumento(index: number) {\r\n if (!documentosVida.value.length) return \"\";\r\n let nombre = documentosVida.value[index].nombreDocumento!;\r\n return (\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.SiniestroApi.ObtenerDocumentosSiniestrosUrl +\r\n \"?ruta=\" +\r\n encodeURIComponent(nombre)\r\n );\r\n}\r\nfunction mostrarEnlace(index: number) {\r\n if (!documentosVida.value.length) return false;\r\n return documentosVida.value[index].nombreDocumento != null;\r\n}\r\nfunction mostrarOpcionales() {\r\n opcionales.value = [];\r\n mostrarMenor.value = false;\r\n mostrarMuerte.value = false;\r\n if (documentosVida.value[7].nombreDocumento != null) {\r\n opcionales.value.push(1);\r\n mostrarMenor.value = true;\r\n }\r\n if (documentosVida.value[8].nombreDocumento != null) {\r\n opcionales.value.push(2);\r\n mostrarMuerte.value = true;\r\n }\r\n}\r\nasync function guardarDocuemento(event: Event, index: number) {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n let file = (event.target as HTMLInputElement).files![0] as File;\r\n let documentoSiniestroId = documentosVida.value[index].documentoSiniestroId!;\r\n let resp = await api.Cliente.Cliente.SiniestroApi.GuardarDocumentoSiniestro(file, documentoSiniestroId);\r\n documentosVida.value = resp.data.data.documentos!;\r\n mostrarOpcionales();\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function enviarNotificacion() {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n let resp = await api.Cliente.Cliente.SiniestroApi.NotificarCambios(\r\n documentosVida.value[0].documentoSiniestroId!,\r\n {} as Cliente.Cliente.Siniestro.SiniestrosDañosPortalCliente\r\n );\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nonMounted(async () => {\r\n documentosVida.value = props.Siniestro;\r\n mostrarOpcionales();\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"none\";\r\n await nextTick();\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.card: .card-body\r\n .row \r\n .col-md-12: p.fw-bold.h3(style=\"color: #2f2d74\") Cargar Documentación\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Dictamen original de invalidez total o pérdidas orgánicas emitido por IMSS, ISSSTE, SSA o cualquier institución médica legalmente autorizada para ejercer la medicina con especialidad en medicina del trabajo.\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 0)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(0)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(0)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Historial clÃnico con todos los estudios realizados de laboratorio y gabinete\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 1)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(1)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(1)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Constancia patronal de la baja por invalidez\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 2)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(2)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(2)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia certificada del acta de nacimiento del asegurado\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 3)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(3)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(3)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de identificación oficial del asegurado\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 4)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(4)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(4)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de comprobante de domicilio del asegurado\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 5)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(5)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(5)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: a.text-primary.text-decoration-underline(href=\"cliente/cliente/pdf/formato/siniestro/invalidez-total.pdf\" target=\"_blank\") Formato de reclamación de siniestro\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 6)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(6)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(6)\" target=\"_blank\") Ver\r\n .col-md-12.mt-4: .row.justify-content-center\r\n .col-md-3: button.btn.bg-white.text-primary.border.border-primary Llamar Asesor\r\n .col-md-3: button.btn.btn-primary.text-white(@click.prevent=\"enviarNotificacion()\") Enviar Información\r\n Spinner-Loader#spinner(name=\"spinner\")\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted, watch, nextTick } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"@/store\";\r\nimport { Cliente, Core, EstadoRespuesta } from \"@/servicios/api\";\r\nconst $store = useStore();\r\nconst mostrarMenor = ref(false);\r\nconst mostrarMuerte = ref(false);\r\nconst opcionales = ref([] as number[]);\r\nconst documentosVida = ref([] as Cliente.Cliente.Siniestro.ListaDocumentos[]);\r\nconst danios = ref({} as Cliente.Cliente.Siniestro.SiniestrosDañosPortalCliente);\r\n//#endregion Props\r\ninterface Props {\r\n Siniestro: Cliente.Cliente.Siniestro.ListaDocumentos[];\r\n}\r\nconst props = withDefaults(defineProps<Props>(), {\r\n Siniestro: () => []\r\n});\r\nwatch(opcionales, () => {\r\n mostrarMenor.value = opcionales.value.includes(1);\r\n mostrarMuerte.value = opcionales.value.includes(2);\r\n});\r\nfunction mostrarDocumento(index: number) {\r\n if (!documentosVida.value.length) return \"\";\r\n let nombre = documentosVida.value[index].nombreDocumento;\r\n return (\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.SiniestroApi.ObtenerDocumentosSiniestrosUrl +\r\n \"?ruta=\" +\r\n nombre\r\n );\r\n}\r\nfunction mostrarEnlace(index: number) {\r\n if (!documentosVida.value.length) return false;\r\n if (documentosVida.value[index].nombreDocumento == null) return false;\r\n return true;\r\n}\r\nasync function guardarDocuemento(event: Event, index: number) {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (!documentosVida.value.length) {\r\n await CrearSiniestro();\r\n }\r\n let file = (event.target as HTMLInputElement).files![0] as File;\r\n let DocumentoSiniestro = documentosVida.value[index];\r\n let resp = await api.Cliente.Cliente.SiniestroApi.GuardarDocumentoSiniestro(\r\n file,\r\n DocumentoSiniestro.documentoSiniestroId!\r\n );\r\n documentosVida.value = resp.data.data.documentos!;\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function CrearSiniestro() {\r\n let resp = await api.Cliente.Cliente.SiniestroApi.CrearSiniestro(Core.Enums.TipoSinestro.INVALIDEZ_TOTAL_PERMANENTE);\r\n if (resp.data.estado == EstadoRespuesta.OK) {\r\n let data = (resp.data.data as Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos)!.documentos!;\r\n documentosVida.value = data;\r\n }\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function enviarNotificacion() {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (!documentosVida.value.length) {\r\n await CrearSiniestro();\r\n }\r\n let resp = await api.Cliente.Cliente.SiniestroApi.NotificarCambios(\r\n documentosVida.value[0].documentoSiniestroId!,\r\n danios.value!\r\n );\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nonMounted(async () => {\r\n documentosVida.value = props.Siniestro;\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"none\";\r\n await nextTick();\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.card: .card-body\r\n .row\r\n .col-md-12: p.fw-bold.h3(style=\"color: #2f2d74\") Cargar Documentación\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de acta de nacimiento\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 0)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(0)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(0)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de comprobante de domicilio\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 1)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(1)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(1)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Copia de INE\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 2)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(2)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(2)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Cálculo de finiquito con firma o sello de la institución\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 3)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(3)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(3)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Contrato laboral\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 4)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(4)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(4)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") 3 recibos de nómina anteriores a la fecha que perdió el empleo\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 5)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(5)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(5)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Baja de seguro\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 6)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(6)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(6)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\") Carta indicando el motivo del despido injustificado\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 7)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(7)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(7)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: a.text-primary.text-decoration-underline(href=\"cliente/cliente/pdf/formato/siniestro/desempleo.pdf\" target=\"_blank\") Formato de reclamación de siniestro\r\n .col-md-2: label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 8)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(8)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(8)\" target=\"_blank\") Ver\r\n .col-md-12.mt-2\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" :id=\"componentId + 'muerteAccidental'\" :name=\"componentId + 'muerteAccidental'\" :value=\"1\" v-model=\"opcionales\")\r\n label.form-check-label(:for=\"componentId + 'muerteAccidental'\" style=\"color: #2f2d74\") ¿Es empleado de gobierno?\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\" v-if=\"empleadoGobierno\") Hoja Única de Servicio y/o Constancia Nombramiento (Especifique la entrega del puesto)\r\n .col-md-2(v-if=\"empleadoGobierno\"): label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 9)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(9)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(9)\" target=\"_blank\") Ver\r\n .col-md-8.mt-2: p(style=\"color: #2f2d74\" v-if=\"empleadoGobierno\") Estado de cuenta bancario que refleje el pago referido\r\n .col-md-2(v-if=\"empleadoGobierno\"): label.btn.btn-primary.text-white\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event, 10)\")\r\n | Cargar\r\n .col-md-2: label.gb-white.text-muted(v-if=\"mostrarEnlace(10)\")\r\n span.fas.fa-eye  \r\n a.text-muted.text-decoration-none(:href=\"mostrarDocumento(10)\" target=\"_blank\") Ver\r\n .col-md-12.mt-4: .row.justify-content-center\r\n .col-md-3: button.btn.bg-white.text-primary.border.border-primary Cancelar\r\n .col-md-3: button.btn.bg-white.text-primary.border.border-primary Llamar Asesor\r\n .col-md-3: button.btn.btn-primary.text-white(@click.prevent=\"enviarNotificacion()\") Enviar Información\r\n Spinner-Loader#spinner(name=\"spinner\")\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted, watch, nextTick } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"@/store\";\r\nimport { Cliente, Core, EstadoRespuesta } from \"@/servicios/api\";\r\nconst $store = useStore();\r\nconst componentId = utilidades.generarId();\r\nconst empleadoGobierno = ref(false);\r\nconst opcionales = ref([] as number[]);\r\nconst documentosVida = ref([] as Cliente.Cliente.Siniestro.ListaDocumentos[]);\r\n//#endregion Props\r\ninterface Props {\r\n Siniestro: Cliente.Cliente.Siniestro.ListaDocumentos[];\r\n}\r\nconst props = withDefaults(defineProps<Props>(), {\r\n Siniestro: () => []\r\n});\r\n\r\nwatch(opcionales, () => {\r\n empleadoGobierno.value = opcionales.value.includes(1) || opcionales.value.includes(2);\r\n});\r\nfunction mostrarDocumento(index: number) {\r\n if (!documentosVida.value.length) return \"\";\r\n let nombre = documentosVida.value[index].nombreDocumento;\r\n return (\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") +\r\n api.Cliente.Cliente.SiniestroApi.ObtenerDocumentosSiniestrosUrl +\r\n \"?ruta=\" +\r\n nombre\r\n );\r\n}\r\nfunction mostrarEnlace(index: number) {\r\n if (!documentosVida.value.length) return false;\r\n return documentosVida.value[index].nombreDocumento != null;\r\n}\r\nfunction mostrarOpcionales() {\r\n opcionales.value = [];\r\n empleadoGobierno.value = false;\r\n let doc9 = false;\r\n let doc10 = false;\r\n if (!documentosVida.value.length) return;\r\n if (documentosVida.value[9].nombreDocumento != null) {\r\n opcionales.value.push(1);\r\n doc9 = true;\r\n }\r\n if (documentosVida.value[10].nombreDocumento != null) {\r\n opcionales.value.push(2);\r\n doc10 = true;\r\n }\r\n empleadoGobierno.value = doc9 || doc10;\r\n}\r\nasync function guardarDocuemento(event: Event, index: number) {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (!documentosVida.value.length) {\r\n await CrearSiniestro();\r\n }\r\n let file = (event.target as HTMLInputElement).files![0] as File;\r\n let DocumentoSiniestro = documentosVida.value[index];\r\n let resp = await api.Cliente.Cliente.SiniestroApi.GuardarDocumentoSiniestro(\r\n file,\r\n DocumentoSiniestro.documentoSiniestroId!\r\n );\r\n documentosVida.value = resp.data.data.documentos!;\r\n mostrarOpcionales();\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function enviarNotificacion() {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (!documentosVida.value.length) {\r\n await CrearSiniestro();\r\n }\r\n let resp = await api.Cliente.Cliente.SiniestroApi.NotificarCambios(\r\n documentosVida.value[0].documentoSiniestroId!,\r\n {} as Cliente.Cliente.Siniestro.SiniestrosDañosPortalCliente\r\n );\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function CrearSiniestro() {\r\n let resp = await api.Cliente.Cliente.SiniestroApi.CrearSiniestro(Core.Enums.TipoSinestro.DESEMPLEO_1A_MENSUALIDAD);\r\n if (resp.data.estado == EstadoRespuesta.OK) {\r\n let data = (resp.data.data as Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos)!.documentos!;\r\n documentosVida.value = data;\r\n }\r\n $store.agregarToast(resp.data);\r\n}\r\nonMounted(async () => {\r\n documentosVida.value = props.Siniestro;\r\n mostrarOpcionales();\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"none\";\r\n await nextTick();\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container(:class=\"{ 'was-validated': formularioValidado }\"): .card: .card-body\r\n .row \r\n .col-md-12: span *Campos obligatorios\r\n .col-md-12: label.form-label.fw-bold.h4.mt-3(style=\"color: #2f2d74\") Información General\r\n .col-md-3\r\n label.form-label.fw-bold(style=\"color: #2f2d74; font-size: 14px\") Fecha de ocurrido*:\r\n input.form-control(type=\"date\" min=\"1900-01-01\" :form=\"componentId + 'form'\" :max=\"fechaIso\" v-model=\"fechaSiniestro\")\r\n .invalid-feedback Fecha invalida.\r\n .col-md-3\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Causa del siniestro *:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model=\"danios.causaSiniestro\")\r\n .invalid-feedback Causa del Siniestro invalida.\r\n .col-md-3\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") ¿Conoce el monto estimado?:\r\n br\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"radio\" :id=\"componentId + 'mostrarMonto'\" :name=\"componentId + 'mostrarMonto'\" :value=\"true\" v-model=\"mostrarMonto\")\r\n label.form-check-label(:for=\"componentId + 'mostrarMonto'\" style=\"color: #2f2d74\") Si\r\n .form-check.form-check-inline\r\n input.form-check-input(type=\"radio\" :id=\"componentId + 'ocultarMonto'\" :name=\"componentId + 'ocultarMonto'\" :value=\"false\" v-model=\"mostrarMonto\")\r\n label.form-check-label(:for=\"componentId + 'ocultarMonto'\" style=\"color: #2f2d74\") No\r\n .col-md-3\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Monto estimado:\r\n hir-autonumeric.form-control(\r\n :form=\"componentId + 'form'\"\r\n :readonly=\"!mostrarMonto\"\r\n v-model=\"danios.montoEstimado\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '99999999', minimumValue: '0', currencySymbol: '$ ' }\"\r\n )\r\n .invalid-feedback Descripcion ocurrido invalido.\r\n .col-md-6.mt-2: label.form-label.fw-bold.h4.mt-3(style=\"color: #2f2d74\") Domicilio del sinestro:\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Calle*:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model=\"danios.calle\")\r\n .invalid-feedback Calle invalida.\r\n .col-md-2\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") No. Interior*:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ0-9 ]+\" v-model=\"danios.numInterior\")\r\n .invalid-feedback No. Interior invalida.\r\n .col-md-2\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") No. Exterior*:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ0-9 ]+\" v-model=\"danios.numExterior\")\r\n .invalid-feedback No. Exterior invalida.\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") C.P. *:\r\n input.form-control(type=\"text\" pattern=\"[0-9]{5}\" v-model=\"cp\")\r\n .invalid-feedback Codigo Postal invalida.\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Colonia:\r\n select.form-select(v-model=\"Colonia\")\r\n option(v-for=\"item in Colonias\" :value=\"item\" :key=\"item.coloniaId\") {{ item.colonia }}\r\n .invalid-feedback Colonia invalida.\r\n .col-md-4 \r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Municipio / AlcaldÃa:\r\n input.form-control(type=\"text\" v-model=\"danios.alcaldiaMunicipio\" readonly)\r\n .invalid-feedback Municipio / AlcaldÃa invalida.\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Estado:\r\n input.form-control(type=\"text\" v-model=\"danios.estado\" readonly)\r\n .invalid-feedback Estado invalida.\r\n .col-md-12: label.form-label.fw-bold.h4.mt-3(style=\"color: #2f2d74\") Contacto que atenderá\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Nombre *:\r\n input.form-control(type=\"text\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" v-model=\"danios.nombre\")\r\n .invalid-feedback Nombre invalida.\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Tel. Particular*:\r\n input.form-control(:form=\"componentId + 'form'\" type=\"tel\" pattern=\"^[0-9]{10}\" v-model=\"danios.telefono\")\r\n .invalid-feedback Teléfono a 10 dÃgitos.\r\n .col-md-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Correo electrónico particular*:\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n v-model=\"danios.email\"\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n )\r\n .invalid-feedback Correo Electrónico Particular invalido.\r\n .col-md-6.mt-4\r\n label.form-label.fw-bold.h5(style=\"color: #2f2d74; font-size: 14px\") Breve desrcripcion de lo ocurrido*:\r\n textarea.form-control(type=\"text\" :form=\"componentId + 'form'\" rows=\"3\" cols=\"20\" v-model=\"danios.descripcion\")\r\n .invalid-feedback Bereve desrcripción de lo ocurrido invalido.\r\n .col-md-6.mt-4\r\n label.btn.btn-primary.text-white.mt-4(style=\"font-size: 14px\")\r\n span.fas.fa-upload  \r\n input(type=\"file\" style=\"display: none\" v-on:change=\"guardarDocuemento($event)\" multiple=\"true\")\r\n | Cargar Evidencia\r\n .col-md-12.mt-4: .row.justify-content-center\r\n .col-md-3: button.btn.bg-white.text-primary.border.border-primary Cancelar\r\n .col-md-3: button.btn.bg-white.text-primary.border.border-primary Llamar Asesor\r\n .col-md-3: button.btn.btn-primary.text-white(@click.prevent=\"guardarDatosSiniestros()\") Enviar Información\r\n Spinner-Loader#spinner(name=\"spinner\")\r\n\r\n// Modal\r\n.modal.fade(:id=\"componentId + 'Loading'\" data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"LoadingLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered\r\n .modal-content\r\n .modal-body.d-flex.justify-content-center.align-items-center\r\n span.spinner-border.spinner-border-sm.text-primary(role=\"status\" aria-hidden=\"true\")\r\n |\r\n span.text-primary.p-2 Cargando información...\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, onMounted, watch, nextTick } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport HirAutonumeric from \"@/components/HirAutonumeric.vue\";\r\nimport { Cliente, Core, EstadoRespuesta } from \"@/servicios/api\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useStore } from \"@/store\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\n//#endregion Data\r\nconst $store = useStore();\r\nconst formularioValidado = ref(false);\r\nconst componentId = ref(utilidades.generarId());\r\nconst fechaIso = new Date().toISOString().substring(0, 10);\r\nconst fechaSiniestro = ref(\"\");\r\nconst siniestro = ref({ danios: {} as Cliente.Cliente.Siniestro.SiniestrosDañosPortalCliente });\r\nconst danios = ref({} as Cliente.Cliente.Siniestro.SiniestrosDañosPortalCliente);\r\nconst siniestroDanio = ref({} as Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos);\r\nconst Colonias = ref({} as Cliente.Cliente.ObtenerColoniasBody[]);\r\nconst Colonia = ref({} as Cliente.Cliente.ObtenerColoniasBody);\r\nconst cp = ref(0);\r\nconst mostrarMonto = ref(false);\r\nformularioValidado.value = true;\r\nconst mostrarSpinner = ref(false);\r\n\r\n//#endregion\r\n//#endregion Props\r\nconst props = defineProps({\r\n Danio: { type: Object as () => Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos, default: null }\r\n});\r\n//#endregion\r\nwatch(mostrarMonto, val => {\r\n danios.value.mostrarMonto = val;\r\n});\r\nwatch(Colonia, val => {\r\n danios.value.colonia = val.colonia;\r\n});\r\nwatch(cp, async val => {\r\n Colonia.value.codigoPostal = val.toString();\r\n danios.value.cp = val;\r\n Colonias.value = [];\r\n Colonias.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerColonias((val || 0).toString())).data;\r\n if (Colonias.value.length > 0) {\r\n Colonia.value = Colonias.value[0] || {};\r\n }\r\n danios.value.colonia = Colonia.value.colonia;\r\n danios.value.estado = Colonia.value.estado;\r\n danios.value.alcaldiaMunicipio = Colonia.value.ciudad;\r\n});\r\n\r\n//methods\r\n\r\nfunction abrirModal() {\r\n const miModal = document.getElementById(`${componentId.value}Loading`);\r\n const modal = new bootstrap.Modal(miModal);\r\n modal?.show();\r\n}\r\nfunction cerrarModal() {\r\n const miModal = document.getElementById(`${componentId.value}Loading`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n modal?.hide();\r\n}\r\n\r\nasync function guardarDatosSiniestros() {\r\n // Obtenemos JSON deserealizado\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (!siniestroDanio.value.existe) {\r\n await CrearSiniestro();\r\n }\r\n let validador = (siniestroDanio.value.documentos?.length ?? 0) > 0;\r\n if (!validador) {\r\n div.style.display = \"none\";\r\n return;\r\n }\r\n let id = siniestroDanio.value.documentos![0].documentoSiniestroId!;\r\n let resp = await api.Cliente.Cliente.SiniestroApi.NotificarCambios(id, danios.value);\r\n siniestroDanio.value.danios = danios.value;\r\n siniestro.value.danios = siniestroDanio.value.danios;\r\n cp.value = siniestroDanio.value.danios.cp!;\r\n fechaSiniestro.value = new Date(danios.value.fechaOcurrido!).toISOString().substring(0, 10);\r\n div.style.display = \"none\";\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function cargarDatos() {\r\n let div = document.querySelector(\"#spinner\") as HTMLDivElement;\r\n div.style.display = \"none\";\r\n siniestroDanio.value = props.Danio;\r\n danios.value = siniestroDanio.value.danios;\r\n cp.value = siniestroDanio.value.danios.cp!;\r\n fechaSiniestro.value = new Date(danios.value.fechaOcurrido!).toISOString().substring(0, 10);\r\n mostrarSpinner.value = false;\r\n}\r\nasync function CrearSiniestro() {\r\n let resp = await api.Cliente.Cliente.SiniestroApi.CrearSiniestro(Core.Enums.TipoSinestro.DAÑOS);\r\n if (resp.data.estado == EstadoRespuesta.OK) {\r\n siniestroDanio.value = resp.data.data;\r\n guardarDatosSiniestros();\r\n }\r\n $store.agregarToast(resp.data);\r\n}\r\nasync function guardarDocuemento(event: Event) {\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n abrirModal();\r\n if (!siniestroDanio.value.existe) {\r\n await CrearSiniestro();\r\n } else {\r\n cerrarModal();\r\n }\r\n let validador = (siniestroDanio.value.documentos?.length ?? 0) > 0;\r\n if (!validador) {\r\n div.style.display = \"none\";\r\n cerrarModal();\r\n return;\r\n }\r\n let files = (event.target as HTMLInputElement).files![0];\r\n let rutas = siniestroDanio.value.documentos![0].documentoSiniestroId!;\r\n let resp = await api.Cliente.Cliente.SiniestroApi.GuardarDocumentoSiniestro(files, rutas!);\r\n siniestroDanio.value = resp.data.data;\r\n guardarDatosSiniestros();\r\n $store.agregarToast(resp.data);\r\n div.style.display = \"none\";\r\n cerrarModal();\r\n}\r\n\r\nonMounted(async () => {\r\n await cargarDatos();\r\n await nextTick();\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins\r\n .row.mt-2\r\n .col-md-12: label.form-label.fw-bold.h1(style=\"color: #2f2d74\") {{ tipoSeguro }}\r\n .col-md-4: label.form-label.fw-bold.h3(style=\"color: #2f2d74\") Reportar un siniestro\r\n .col-md-4: select.form-select(v-model=\"siniestro\")\r\n option(disabled) Seleccionar\r\n option(:value=\"item\" v-for=\"(item, i) in listaSiniestros\") {{ item.item }}\r\n .col-md-12.mt-4: p(style=\"color: #2f2d74\") Para poder registrar la solicitud toma en cuenta las siguientes recomendaciones:\r\n .col-md-12: ul \r\n li(style=\"color: #2f2d74\") Es importante estar al corriente con los pago(s).\r\n li(style=\"color: #2f2d74\") Contar con documentación actualizada.\r\n li(style=\"color: #2f2d74\") Escaneos a color y en formato PDF.\r\n .col-md-12.mt-4(v-if=\"mostrarDesempeno\"): p(style=\"color: #2f2d74\") El seguro de desempleo aplica en caso de:\r\n .col-md-12(v-if=\"mostrarDesempeno\"): ul \r\n li(style=\"color: #2f2d74\") Ser trabajador asalariado\r\n li(style=\"color: #2f2d74\") Sea un despido injustificado\r\n li(style=\"color: #2f2d74\") Su mensualidad del mes en que se perdió el empleo fuera pagada en tiempo y forma como estipula su contrato.\r\n .col-md-12: Seguro-Vida(v-if=\"mostrarVida\" :Siniestro=\"siniestro.documentos\")\r\n .col-md-12: Seguro-Invalidez(v-if=\"mostrarInvalidez\" :Siniestro=\"siniestro.documentos\")\r\n .col-md-12: Seguro-Desempleo(v-if=\"mostrarDesempeno\" :Siniestro=\"siniestro.documentos\")\r\n .col-md-12: Seguro-Danios(v-if=\"mostrarDanios\" :Danio=\"siniestro\")\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref, reactive, toRefs, toRaw, onMounted, computed, watch } from \"vue\";\r\nimport SeguroVida from \"./Siniestros/SeguroVida.vue\";\r\nimport SeguroInvalidez from \"./Siniestros/SeguroInvalidez.vue\";\r\nimport SeguroDesempleo from \"./Siniestros/SeguroDesempleo.vue\";\r\nimport SeguroDanios from \"./Siniestros/SeguroDanios.vue\";\r\nimport { Cliente, Core } from \"@/servicios/api\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { useRouter } from \"vue-router\";\r\n//#endregion Data\r\nconst $router = useRouter();\r\nconst tipoSeguro = ref(\"Seguro de Vida\");\r\nconst listaSiniestros = ref([] as Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos[]);\r\nconst siniestro = ref({} as Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos);\r\nconst mostrarVida = ref(false);\r\nconst mostrarInvalidez = ref(false);\r\nconst mostrarDesempeno = ref(false);\r\nconst mostrarDanios = ref(false);\r\n//#endregion\r\n//#endregion Watch\r\nwatch(siniestro, async (item: Cliente.Cliente.Siniestro.ListaSiniestroconDocumentos) => {\r\n mostrarInvalidez.value = item.tipo == Core.Enums.TipoSinestro.INVALIDEZ_TOTAL_PERMANENTE ? true : false;\r\n mostrarVida.value = item.tipo == Core.Enums.TipoSinestro.FALLECIMIENTO ? true : false;\r\n mostrarDesempeno.value = item.tipo == Core.Enums.TipoSinestro.DESEMPLEO_1A_MENSUALIDAD ? true : false;\r\n mostrarDanios.value = item.tipo == Core.Enums.TipoSinestro.DAÑOS ? true : false;\r\n tipoSeguro.value =\r\n item.tipo! == Core.Enums.TipoSinestro.FALLECIMIENTO\r\n ? \"SEGURO DE VIDA\"\r\n : item.tipo == Core.Enums.TipoSinestro.INVALIDEZ_TOTAL_PERMANENTE\r\n ? \"SEGURO DE INVALIDEZ\"\r\n : item.tipo == Core.Enums.TipoSinestro.DAÑOS\r\n ? \"SEGURO DE DAÑOS\"\r\n : \"SEGURO DE DESEMPLEO\";\r\n //}\r\n});\r\n//#endregion\r\n//#endregion Computed\r\n//#endregion\r\n\r\nonMounted(async () => {\r\n let siniestroId = ($router.currentRoute.value.query[\"siniestroid\"] as string) || \"\";\r\n let resp = (await api.Cliente.Cliente.SiniestroApi.ObtenerSiniestrosCliente(siniestroId!)).data!;\r\n listaSiniestros.value = resp;\r\n listaSiniestros.value ??= [];\r\n if (listaSiniestros.value.length > 0) siniestro.value = listaSiniestros.value[0];\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n#codigoModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mw-80.w-75(role=\"document\")\r\n .modal-content\r\n .modal-body\r\n .row\r\n .col-md-12: h4.m-2.font-weight-bold(style=\"font-size: 15px; text-align: right\") \r\n button.btn-close(aria-label=\"Close\" type=\"button\" v-on:click=\"cerrarModalCodigo()\")\r\n .div(style=\"margin: 10px 35px 30px 35px\")\r\n .row\r\n .col-md-12: h4.m-2.font-weight-bold\r\n h4 Ingresa el código que hemos enviado al {{ medioContacto.valor }}\r\n .div(style=\"margin: 0px 35px 40px 35px\")\r\n .row\r\n input.form-control(v-model=\"code6\" type=\"text\" pattern=\"[0-9]{6}\" maxlength=\"6\" required)\r\n .div(style=\"margin: 10px 60px 40px 60px\")\r\n .div(style=\"text-align: center\")\r\n h6(v-show=\"validador == false\" style=\"color: red\") Código inválido. Intente de nuevo.\r\n .div(style=\"margin: 40px 0px 0px 0px; text-align: center\")\r\n h4 ¿No recibiste el código?\r\n a.btn.btn-primary.text-white(type=\"button\" v-on:click=\"mostrarModalCodigo()\") Enviar nuevamente\r\n#mediosContactoModal.modal.fade(tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\")\r\n .modal-dialog.modal-dialog-centered.mh-100(role=\"document\")\r\n .modal-content\r\n .modal-body\r\n .row\r\n .col-md-12: h4.m-2.font-weight-bold(style=\"font-size: 15px; text-align: right\") \r\n button.btn-close(aria-label=\"Close\" type=\"button\" v-on:click=\"cerrarModalContactos()\")\r\n .div(style=\"margin: 10px 35px 40px 35px\")\r\n .row\r\n .col-md-12: h4.m-2.font-weight-bold\r\n h4(style=\"margin: 10px 0px 6px 0px\") Para validar tu identidad te enviaremos un código de verificación.\r\n h4(style=\"margin: 10px 0px 6px 0px\") ¿Por cuál medio prefieres recibirlo?\r\n .row(style=\"font-size: 15px\")\r\n .col\r\n .div.d-flex.justify-content-start.flex-column.align-items-start\r\n .div(style=\"margin: 30px 0px 0px 0px\")\r\n .row: template(v-for=\"(medio, index) in props.MediosContactos\" :key=\"index\")\r\n .col-md-12\r\n input.form-check-input(type=\"radio\" :name=\"'medioContacto' + index\" :id=\"'medioContacto' + index\" :value=\"medio\" v-model=\"medioContacto\")\r\n label.form-check-label.ms-2(:for=\"'medioContacto' + index\") {{ medio.valor }}\r\n .col\r\n .div(style=\"margin: 40px 0px 0px 0px; text-align: center\")\r\n button.btn.btn-primary.text-white(v-on:click=\"mostrarModalCodigo()\" v-if=\"medioContacto.valor != null\") Confirmar\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { ref, onMounted, watch } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { Cliente, EstadoRespuesta } from \"@/servicios/api\";\r\ninterface MediosContacto {\r\n valor: string;\r\n tipo: number;\r\n}\r\nconst medioContacto = ref({} as MediosContacto);\r\nconst code6 = ref(\"\");\r\nconst validador = ref(true);\r\nconst emit = defineEmits<{\r\n (e: \"pinvalidado\", validacion: boolean): void;\r\n}>();\r\n//#endregion Props\r\nconst props = defineProps({\r\n MediosContactos: { type: Object as () => MediosContacto[], default: null }\r\n});\r\n//#endregion\r\nwatch(code6, async () => {\r\n var reg = /^(\\d)*$/;\r\n if (!reg.test(code6.value)) code6.value = code6.value.substring(0, code6.value.length - 1);\r\n validador.value = true;\r\n console.log(code6.value);\r\n if (code6.value.length == 6) {\r\n var resp = await api.Cliente.Cliente.HomeApi.ValidarPIN(\r\n medioContacto.value.valor,\r\n medioContacto.value.tipo,\r\n code6.value\r\n );\r\n if (resp.data.estado == EstadoRespuesta.OK) cerrarModalCodigo();\r\n code6.value = \"\";\r\n validarPin(resp.data.estado == EstadoRespuesta.OK);\r\n }\r\n});\r\n//#endregion Methods\r\nfunction validarPin(value: boolean) {\r\n emit(\"pinvalidado\", value);\r\n}\r\nfunction cerrarModalContactos() {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#mediosContactoModal\") as HTMLDivElement)?.hide();\r\n}\r\nasync function mostrarModalCodigo() {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#mediosContactoModal\") as HTMLDivElement)?.hide();\r\n let data = {} as Cliente.Cliente.Home.GenerarPINBody;\r\n data.medioContacto = medioContacto.value.tipo!;\r\n data.valor = medioContacto.value.valor!;\r\n data.ubicacion = \"0,0\";\r\n await api.Cliente.Cliente.HomeApi.GenerarPIN(data);\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#codigoModal\") as HTMLDivElement)?.show();\r\n}\r\nfunction cerrarModalCodigo() {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#codigoModal\") as HTMLDivElement)?.hide();\r\n}\r\n//#endregion\r\nonMounted(() => {\r\n medioContacto.value = {} as MediosContacto;\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pb-4(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row: .col-md-12\r\n generar-pin(:MediosContactos=\"mediosContactos\" ref=\"GeneradorPin\" @pin-validado=\"validarPin\")\r\n .row\r\n .col-md-12: h1.fw-bold(style=\"color: #2f2d74\") Financiamiento\r\n .col-md-12: h3.fw-bold(style=\"color: #2f2d74\") Facturación\r\n .col-md-12: p.fw-bold.text-muted ¿Qué necesito para poder tener activo mi servicio de facturación?\r\n .row: .col-md-12.m-2: ol\r\n li.fw-bold.text-muted Identificación Oficial Vigente\r\n li.fw-bold.text-muted Cédula fiscal\r\n li.fw-bold.text-muted Genera, imprime y carga tu formato de Facturación\r\n .row: .col-md-12 \r\n .card: .card-body(v-if=\"mostrarDescargaFactura == false\")\r\n Spinner-Loader#spinner(name=\"spinner\" style=\"width: 98%; display: none\")\r\n .col-md-12: p.fw-bold(style=\"color: #2f2d74\") Proporciona los siguientes datos\r\n .col-md-12: p.fw-bold(style=\"color: #2f2d74\") Contratos a facturar\r\n .col-md-12: p.fw-bold(style=\"color: #2f2d74\") Marcar solo los contratos a los cuales se solicitará la facturación.\r\n .row: .col-md-12\r\n .row: .col-md-2(v-for=\"(contrato, index) in contratos\" :key=\"index\"): .form-check.form-check-inline\r\n input.form-check-input(type=\"checkbox\" :value=\"contrato.contratoId\" :id=\"'contrato' + index\" v-model=\"contratoIdFacturar\" checked)\r\n label.form-check-label(:for=\"'contrato' + index\") {{ contrato.numeroContrato }}\r\n .row\r\n .col-md-4\r\n label.m-2.font-weight-bold Nombre(s) *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.nombre\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold Apellido Paterno *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.apellidoPaterno\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold Apellido Materno *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.apellidoMaterno\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold RFC con homoclave (12 dÃgitos) *\r\n input.form-control(\r\n type=\"text\"\r\n v-model=\"datosFacturacion.rfc\"\r\n pattern=\"[a-zA-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][a-zA-Z,0-9]?[a-zA-Z,0-9]?[0-9,a-zA-Z]?\"\r\n minlength=\"12\"\r\n maxlength=\"13\"\r\n required\r\n )\r\n .col-md-4\r\n label.m-2.font-weight-bold Regimen Fiscal *\r\n select.form-select(v-model=\"datosFacturacion.regimenFiscalId\")\r\n option(v-for=\"r in regimenesFiscales\" :value=\"r.regimenFiscalId\") {{ r.nombreRegimen }}\r\n .row.mt-4\r\n .col-md-12: h6.fw-bold(style=\"color: #2f2d74\") Domicilio Fiscal\r\n .col-md-4\r\n label.m-2.font-weight-bold Calle *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.calle\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold No. Interior / Exterior *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.numero\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold CP *\r\n input.form-control(type=\"text\" v-model=\"cp\" minlength=\"5\" maxlength=\"5\" pattern=\"^[0-9]{5}\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold Colonia *\r\n select.form-select(v-model=\"coloniaId\")\r\n option(v-for=\"(col, i) in colonias\" :value=\"col.coloniaId\" :key=\"i\") {{ col.colonia }}\r\n .col-md-4\r\n label.m-2.font-weight-bold Colonia *\r\n input.form-control(type=\"text\" v-model=\"ciudad\" readonly)\r\n .col-md-4\r\n label.m-2.font-weight-bold Estado *\r\n input.form-control(type=\"text\" v-model=\"estado\" readonly)\r\n .col-md-4\r\n label.m-2.font-weight-bold Telefono particular *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.telefonoParticular\" minlength=\"10\" maxlength=\"10\" pattern=\"^[0-9]{10}\" required)\r\n .col-md-4\r\n label.m-2.font-weight-bold Telefono celular *\r\n input.form-control(type=\"text\" v-model=\"datosFacturacion.telefonoCelular\" minlength=\"10\" maxlength=\"10\" pattern=\"^[0-9]{10}\" required)\r\n .row\r\n .col-md-6.mt-4\r\n label.m-2.font-weight-bold Identificación Oficial *\r\n input#Edotercero(type=\"file\" v-on:change=\"obtenerArchivo($event)\" hidden)\r\n label(for=\"Edotercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n br\r\n a.fw-bold.text-primary(\r\n :href=\"visualizarArchivo(fileIdentificacion)\"\r\n target=\"_blank\"\r\n v-if=\"mostrarFileIdentificacion\"\r\n :id=\"componentId + 'identificacion'\"\r\n ) {{ fileIdentificacion.name }}\r\n .col-md-6.mt-4\r\n label.m-2.font-weight-bold Cedula de Identificación Fiscal *\r\n input#Cedula(type=\"file\" v-on:change=\"obtenerArchivoCedula($event)\" hidden)\r\n label(for=\"Cedula\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n br\r\n a.fw-bold.text-primary(:href=\"visualizarArchivoCedula(fileCedula)\" target=\"_blank\" v-if=\"mostrarFileCedula\" :id=\"componentId + 'cedula'\") {{ fileCedula.name }}\r\n .col-md-12.mt-2: span.text-muted El (la) que suscribe, como cliente de Bienes Programados, S.A. de C.V., manifiesto:\r\n .col-md-12.mt-2: span.text-muted Que Bienes Programados S.A de C.V.(en lo sucesivo HIRCASA), con domicilio en Avenida Desierto de los Leones número 46, nivel 1, colonia San Ãngel, AlcaldÃa Ãlvaro Obregón, Ciudad de México, C.P. 01000, me ha puesto a la vista el Aviso de Privacidad que tiene establecido conforme a la Ley Federal de Protección de Datos Personales en Posesión de los Particulares, y me ha informado que puedo consultarlo en la sitio www.hircasa.com.mx, mismo que he leÃdo y comprendido, por lo que otorgo mi consentimiento libre de vicios para que HIRCASA recabe, utilice, conserve y/o transfiera mis datos personales sensibles, manifestando tácitamente mi conformidad para que HIRCASA pueda allegarse de más información a través de otras fuentes o personas.\r\n .row \r\n .col-md-3 \r\n //-.col-md-3: a.btn.bg-white.text-center.text-primary.mt-2.border.border-primary No Aceptar\r\n .col-md-3: router-link.text-decoration-none(:to=\"{ name: 'cliente-cliente-home' }\")\r\n p.btn.bg-white.text-center.text-primary.mt-2.border.border-primary No Aceptar\r\n .col-md-3: a.btn.btn-primary.text-white.mt-2(@click.prevent=\"guardarFacturacion()\" v-if=\"mostrarFileIdentificacion && mostrarFileCedula\") Aceptar\r\n .card: .card-body(v-if=\"mostrarDescargaFactura == true\")\r\n .row\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #2f2d74\") Tu trámite de Facturación se ha concluido correctamente.\r\n .col-md-4\r\n .col-md-4: a.btn.btn-primary.text-white(:href=\"urlFactura\" target=\"_blank\") Descarga tu comprobante de formato de facturación.\r\n .col-md-4\r\n .col-md-12: p.text-center.fw-bold(style=\"color: #2f2d74\") ¿Hay algun error en tu formato?\r\n .col-md-4\r\n .col-md-4: a.text-decoration-none.text-center.fw-bold.text-primary(href=\"#\" @click.prevent=\"recargarPantalla()\") Presiona aqui para generar otro formato.\r\n .col-md-4\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { nextTick, onMounted, reactive, ref, watch } from \"vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { Cliente, Core, EstadoRespuesta } from \"@/servicios/api\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport GenerarPin from \"../components/GeneradorPin.vue\";\r\nimport SpinnerLoader from \"../components/SpinnerLoader.vue\";\r\ninterface MediosContacto {\r\n valor: string;\r\n tipo: number;\r\n}\r\n//- Variables del programa\r\nconst $store = useStore();\r\nconst mediosContactos = ref([] as MediosContacto[]);\r\nconst formularioValidado = ref(false);\r\nconst componentId = utilidades.generarId();\r\nconst contratos = ref([] as Cliente.Financiamiento.InformacionFinanciamientoContrato[]);\r\nconst contratoIdFacturar = ref([] as number[]);\r\nconst datosFacturacion = ref({} as Cliente.Cliente.FacturacionBody);\r\nconst regimenesFiscales = ref([] as Core.Models.RegimenFiscal[]);\r\nconst regimenFiscal = ref(0);\r\nconst cp = ref(\"0\");\r\nconst colonias = ref([] as Cliente.Cliente.ObtenerColoniasBody[]);\r\nconst coloniaId = ref(0);\r\nconst ciudad = ref(\"\");\r\nconst estado = ref(\"\");\r\nconst fileIdentificacion = ref({} as File);\r\nconst mostrarFileIdentificacion = ref(false);\r\nconst fileCedula = ref({} as File);\r\nconst mostrarFileCedula = ref(false);\r\nconst mostrarDescargaFactura = ref(false);\r\n\r\nconst urlFactura = ref(\"\");\r\n// #region Metodos Emits\r\nfunction recargarPantalla() {\r\n window.location.reload();\r\n}\r\nasync function validarPin(value: boolean) {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#codigoModal\") as HTMLDivElement)?.hide();\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n if (value) {\r\n const data = contratos.value.filter(x => contratoIdFacturar.value.includes(x.contratoId!));\r\n datosFacturacion.value.contrato.contratoId = data.map(x => x.contratoId!);\r\n datosFacturacion.value.contrato.numeroContrato = data.map(x => x.numeroContrato!);\r\n let respuesta = await api.Cliente.Cliente.FacturacionApi.GuardarDatosFacturacion(datosFacturacion.value);\r\n mostrarDescargaFactura.value = respuesta.data.estado === EstadoRespuesta.OK;\r\n if (respuesta.data.estado == EstadoRespuesta.OK) {\r\n let notificacion = await api.Cliente.Cliente.FacturacionApi.NotificarUsuarios();\r\n $store.agregarToast(notificacion.data);\r\n if (mostrarFileIdentificacion.value) {\r\n let respIdentificaion = await api.Cliente.Cliente.FacturacionApi.GuardarDocumentoFacturacion(\r\n fileIdentificacion.value,\r\n Core.Enums.TipoDocumentoDomiciliacion.Identificacion_Oficial_Cliente\r\n );\r\n $store.agregarToast(respIdentificaion.data);\r\n }\r\n if (mostrarFileCedula.value) {\r\n let respCedula = await api.Cliente.Cliente.FacturacionApi.GuardarDocumentoFacturacion(\r\n fileIdentificacion.value,\r\n Core.Enums.TipoDocumentoDomiciliacion.Estado_Cuenta_Cliente\r\n );\r\n $store.agregarToast(respCedula.data);\r\n }\r\n }\r\n $store.agregarToast(respuesta.data);\r\n }\r\n div.style.display = \"none\";\r\n}\r\n// #endregion\r\n// #region Eventos Observadores\r\nwatch(cp, async value => {\r\n colonias.value = (await api.Cliente.Cliente.EscrituracionApi.ObtenerColonias(value || \"\")).data;\r\n if (colonias.value.length) {\r\n coloniaId.value = colonias.value[0]!.coloniaId!;\r\n }\r\n});\r\nwatch(coloniaId, value => {\r\n datosFacturacion.value.colonia = colonias.value.find(e => e.coloniaId == value)!;\r\n ciudad.value = colonias.value.find(e => e.coloniaId == value)?.ciudad!;\r\n estado.value = colonias.value.find(e => e.coloniaId == value)?.estado!;\r\n});\r\n// #endregion\r\n// #region Metodos\r\nfunction guardarFacturacion() {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#mediosContactoModal\") as HTMLDivElement)?.show();\r\n}\r\nfunction obtenerArchivo(event: any) {\r\n let file = event.target.files[0];\r\n fileIdentificacion.value = file;\r\n mostrarFileIdentificacion.value = true;\r\n}\r\nfunction obtenerArchivoCedula(event: any) {\r\n let file = event.target.files[0];\r\n fileCedula.value = file;\r\n mostrarFileCedula.value = true;\r\n}\r\nfunction visualizarArchivo(archivo: Blob) {\r\n let leer = URL.createObjectURL(archivo);\r\n return leer;\r\n}\r\nfunction visualizarArchivoCedula(archivo: Blob) {\r\n let leer = URL.createObjectURL(archivo);\r\n return leer;\r\n}\r\n// #endregion\r\n\r\napi.Cliente.Cliente.RegimenFiscalApi.Obtener().then(respuesta => {\r\n regimenesFiscales.value = respuesta.data;\r\n});\r\n\r\n// Recuperar el régimen fiscal\r\nPromise.all([\r\n api.Cliente.Cliente.ClienteApi.ObtenerPersonaFisica(),\r\n api.Cliente.Cliente.ClienteApi.ObtenerPersonaMoral()\r\n]).then(personas => {\r\n if (personas[0].data) datosFacturacion.value.regimenFiscalId = personas[0].data.regimenFiscalId;\r\n else if (personas[1].data) datosFacturacion.value.regimenFiscalId = personas[1].data.regimenFiscalId;\r\n});\r\n\r\nonMounted(async () => {\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n formularioValidado.value = true;\r\n mostrarDescargaFactura.value = false;\r\n datosFacturacion.value = (await api.Cliente.Cliente.FacturacionApi.ObtenerDatosFacturacion()).data;\r\n contratos.value = (await api.Cliente.Cliente.FinanciamientoApi.ObtenerContratos(1)).data;\r\n cp.value = datosFacturacion.value.cp!;\r\n //- Filtramos los contratosID\r\n contratoIdFacturar.value = contratos.value.map(e => {\r\n return e.contratoId;\r\n });\r\n mostrarFileCedula.value = false;\r\n mostrarFileIdentificacion.value = false;\r\n //Consultamos los datos del medios de contatcos del cliente\r\n let informacionCliente = (await api.Cliente.Cliente.HomeApi.ObtenerInformacion()).data;\r\n mediosContactos.value = [];\r\n if (informacionCliente.cliente.telefono3 != null)\r\n mediosContactos.value.push({ valor: informacionCliente.cliente.telefono3!, tipo: 0 });\r\n if (informacionCliente.cliente.email1 != null)\r\n mediosContactos.value.push({ valor: informacionCliente.cliente.email1!, tipo: 1 });\r\n urlFactura.value =\r\n (import.meta.env.BASE_URL || \"\").replace(/\\/$/g, \"\") + api.Cliente.Cliente.FacturacionApi.ObtenerPDFFacturacionUrl;\r\n div.style.display = \"none\";\r\n await nextTick();\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pb-4(:class=\"{ 'was-validated': formularioValidado }\")\r\n generar-pin(:MediosContactos=\"mediosContactos\" ref=\"GeneradorPin\" @pin-validado=\"getValidacion\")\r\n .row(style=\"margin: 50px auto 20px auto\"): h1.fw-bold Domiciliación\r\n .row(style=\"background-color: white; border-radius: 10px; box-shadow: 4px 4.5px 10px -6px black\" v-if=\"mostrarFormulario\")\r\n .col-md-5(style=\"margin: 0 auto; padding: 40px 40px\")\r\n .row \r\n h5.fw-bold Contratos Domiciliados\r\n .row(style=\"padding: 20px 40px\")\r\n .col-md-7\r\n .row(style=\"margin: 0 0 10px 0\")\r\n h5.fw-bold Contrato\r\n .row(v-for=\"(contrato, index) in listaContratos\" :key=\"index\")\r\n .col-md-10(style=\"padding: 0 0 0 25px\")\r\n p(v-if=\"contrato.esDomiciliado != null\") {{ contrato.numeroContrato }}\r\n .col-md-5\r\n .row(style=\"margin: 0 0 10px -13px\")\r\n h5.fw-bold Cuota*\r\n .row(v-for=\"(contrato, index) in listaContratos\" :key=\"index\")\r\n .col-md-12\r\n p(v-if=\"contrato.esDomiciliado != null\") {{ filtros.filtroDivisa(contrato.montoCoutaVigente) }} mxn\r\n h5.fw-bold Selecciona los contratos a domiciliar\r\n .row(style=\"padding: 20px 40px\")\r\n .col-md-7\r\n .row(style=\"margin: 0 0 10px 0\")\r\n h5.fw-bold Contrato\r\n .row(v-for=\"(contrato, index) in listaContratos\" :key=\"index\")\r\n .col-md-1(v-if=\"contrato.esDomiciliado == null\")\r\n input(type=\"checkbox\" :id=\"contrato.contratoId.toString()\" :value=\"contrato.contratoId\")\r\n .col-md-10(v-if=\"contrato.esDomiciliado == null\")\r\n p {{ contrato.numeroContrato }}\r\n .col-md-5\r\n .row(style=\"margin: 0 0 10px -13px\")\r\n h5.fw-bold Cuota*\r\n .row(v-for=\"(contrato, index) in listaContratos\" :key=\"index\")\r\n .col-md-12(v-if=\"contrato.esDomiciliado == null\")\r\n p {{ filtros.filtroDivisa(contrato.montoCoutaVigente) }} mxn\r\n .row \r\n p(style=\"font-size: 15px\") *Cuota vigente hasta dd/mm/aaaa\r\n .col-md-1(style=\"border-right: 1px solid black; height: 300px; margin: 40px 0 0 0\")\r\n .col-md-6\r\n .row(style=\"padding: 40px 0 5px 20px\") \r\n h5.fw-bold Selecciona si es la cuenta del titular o de un tercero\r\n .row(style=\"padding: 0 20px\") \r\n .col-md-4(style=\"margin: 0 -40px 0 0\")\r\n button(\r\n v-on:click=\"obtenerDatosCliente()\"\r\n style=\"border-radius: 15px; padding: 10px; background-color: white\"\r\n :style=\"cuentaSeleccionada == true ? 'background-color: rgb(89, 53, 223); color: white;' : 'border: 1px solid black;'\"\r\n ) Cuenta Titular\r\n .col-md-4\r\n button(\r\n v-on:click=\"obtenerDatosTercero()\"\r\n style=\"background-color: white; border-radius: 15px; padding: 10px 20px\"\r\n :style=\"cuentaSeleccionada == false ? 'background-color: rgb(89, 53, 223); color: white;' : 'border: 1px solid black;'\"\r\n ) Cuenta Tercero\r\n .col-md-4\r\n .row(style=\"padding: 70px 0 10px 20px\" v-if=\"cuentaSeleccionada == 'cliente'\")\r\n h5.fw-bold Ingresa los datos bancarios\r\n .row(style=\"padding: 0 20px\" v-if=\"cuentaSeleccionada == 'cliente'\") \r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Nombre(s) *\r\n input.form-control(type=\"text\" v-model=\"nombre\" :form=\"componentId + 'form'\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Apellido Paterno *\r\n input.form-control(type=\"text\" v-model=\"apellidoPaterno\" :form=\"componentId + 'form'\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Apellido Materno *\r\n input.form-control(type=\"text\" v-model=\"apellidoMaterno\" :form=\"componentId + 'form'\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .row(style=\"padding: 20px 20px\" v-if=\"cuentaSeleccionada == 'cliente'\") \r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Teléfono de contacto *\r\n input.form-control(type=\"tel\" v-model=\"telefonoTercero\" pattern=\"[0-9]{10}\")\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Banco *\r\n select.form-select(v-model=\"datosCliente.banco.bancoId\" :form=\"componentId + 'form'\"): option(v-for=\"banco in bancos\" :value=\"banco.bancoId\") {{ banco.nombre }}\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Clabe *\r\n input.form-control(type=\"text\" v-model=\"datosCliente.clabe\" :form=\"componentId + 'form'\" pattern=\"[0-9]+\")\r\n .row.mt-3(style=\"margin: 0 0 0 10px\" v-if=\"cuentaSeleccionada == 'cliente'\") \r\n .col-md-5(style=\"margin: 0 20px 0 10px\")\r\n .row: h6 Identificación oficial*\r\n .row\r\n input#IDtercero(type=\"file\" v-on:change=\"obtenerArchivoID($event)\" hidden)\r\n label(for=\"IDtercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n .row(style=\"text-align: center; margin: 10px 0 0 0\")\r\n a.fw-bold(v-if=\"motsrarNombreArchivoID == false ? true : false\" :href=\"visualizarArchivo(archivoID)\" target=\"_blank\") {{ archivoID.name }}\r\n .col-md-5\r\n .row: h6 Estado de cuenta bancario*\r\n .row\r\n input#Edotercero(type=\"file\" v-on:change=\"obtenerArchivoEdo($event)\" hidden)\r\n label(for=\"Edotercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n .row(style=\"text-align: center; margin: 10px 0 0 0\")\r\n a.fw-bold(v-if=\"motsrarNombreArchivoEdo == false ? true : false\" :href=\"visualizarArchivo(archivoEdo)\" target=\"_blank\") {{ archivoEdo.name }}\r\n .row.mt-3(style=\"margin: 0 0 0 10px\" v-if=\"cuentaSeleccionada == 'tercero'\")\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Nombre de Tercero:*\r\n input.form-control(type=\"text\" v-model=\"apellidoPaterno\" :form=\"componentId + 'form'\" pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\")\r\n .col-md-6 \r\n p(style=\"color: #2f2d74\") Teléfono de contacto*\r\n input.form-control(type=\"text\" v-model=\"telefonoTercero\" pattern=\"[0-9]{10}\")\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Banco*\r\n select.form-select(v-model=\"datosCliente.banco.bancoId\" :form=\"componentId + 'form'\")\r\n option(v-for=\"banco in bancos\" :value=\"banco.bancoId\") {{ banco.nombre }}\r\n .col-md-6\r\n p(style=\"color: #2f2d74\") Clabe*\r\n input.form-control(type=\"text\" v-model=\"datosCliente.clabe\" :form=\"componentId + 'form'\" pattern=\"[0-9]+\")\r\n .col-md-5(style=\"margin: 0 20px 0 10px\")\r\n .row: h6 Identificación oficial del tercero*\r\n .row\r\n input#IDtercero(type=\"file\" v-on:change=\"obtenerArchivoIdTercero($event)\" hidden)\r\n label(for=\"IDtercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n .row(style=\"text-align: center; margin: 10px 0 0 0\")\r\n a.fw-bold(v-if=\"motsrarNombreArchivoIDTercero == false ? true : false\" :href=\"visualizarArchivo(archivoIDTercero)\" target=\"_blank\") {{ archivoIDTercero.name }}\r\n .col-md-5\r\n .row: h6 Estado de cuenta bancario del tercero*\r\n .row\r\n input#Edotercero(type=\"file\" v-on:change=\"obtenerArchivoEdoTercero($event)\" hidden)\r\n label(for=\"Edotercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n .row(style=\"text-align: center; margin: 10px 0 0 0\")\r\n a.fw-bold(v-if=\"motsrarNombreArchivoEdoTercero == false ? true : false\" :href=\"visualizarArchivo(archivoEdoTercero)\" target=\"_blank\") {{ archivoEdoTercero.name }}\r\n .row.mt-3(style=\"margin: 0 0 0 10px\" v-if=\"cuentaSeleccionada == 'tercero'\") \r\n .col-md-5(style=\"margin: 0 20px 0 10px\")\r\n .row: h6 Descarga el formato de domiciliación*\r\n h6 Llena los datos\r\n .row: a.fw-bold(\r\n href=\"Documentos/ATC-FO-145FORMATOUNICOPARADOMICILIACIONDEMENSUALIDADESAHIRCASAV1.doc\"\r\n style=\"background-color: rgb(89, 53, 223); text-decoration: none; color: white; border-radius: 10px; padding: 5px 20px\"\r\n ) Descarga formato de domiciliación\r\n .col-md-5.mt-4\r\n .row: h6 Carga el formato de domiciliación*\r\n .row\r\n input#CargaTercero(type=\"file\" v-on:change=\"cargaFormato($event)\" hidden)\r\n label(for=\"CargaTercero\" style=\"background-color: rgb(224, 231, 234); border-radius: 10px; padding: 5px 20px\") Arrastra tus archivos aqui o Búscalos\r\n .row(style=\"text-align: center; margin: 10px 0 0 0\")\r\n a.fw-bold(v-if=\"motsrarNombreArchivoFormato == false ? true : false\" :href=\"visualizarArchivo(formato)\" target=\"_blank\") {{ formato.name }}\r\n .row(style=\"margin: 40px 0 40px 0\") \r\n .col-md-4\r\n .col-md-3\r\n button(\r\n style=\"width: 100%; border-radius: 10px; border: 1px solid rgb(235, 129, 19); color: rgb(235, 129, 19); padding: 8px 30px; background-color: white\"\r\n ) Cancelar\r\n .col-md-5\r\n button.fw-bold(\r\n :form=\"componentId + 'form'\"\r\n style=\"width: 100%; border-radius: 10px; padding: 8px 60px; background-color: rgb(235, 129, 19); color: white; border: none\"\r\n v-on:click=\"capturaDatosDomiciliacion()\"\r\n ) Continuar\r\n .card(v-if=\"!mostrarFormulario\"): .card-body\r\n .row\r\n .col-md-12\r\n Spinner-Loader#spinner(name=\"spinner\" style=\"width: 100%; display: none\")\r\n .row: .col-md-12\r\n h6.fw-bold Resumen de los contratos a domiciliar\r\n .row \r\n .col-md-3(style=\"background-color: rgb(89, 53, 223); border-radius: 10px; color: white; text-align: center; padding: 20px 0; margin: 20px 0 0 10px\")\r\n .row(style=\"text-align: center\") \r\n h6 Monto a domiciliar\r\n .row(style=\"margin: 0 0 20px 0\") \r\n h6.fw-bold {{ filtros.filtroDivisa(informacionContratosGuardados.sumaCuotas) }} mxn\r\n .row \r\n h6 {{ (nombre || \"\") + \" \" + (apellidoPaterno || \"\") + \" \" + (apellidoMaterno || \"\") }}\r\n .row \r\n h6.fw-bold {{ datosCliente.clabe }}\r\n .row \r\n h6.fw-bold {{ datosCliente.banco.nombre }}\r\n .col-md-1\r\n .col-md-7(style=\"margin: 20px\")\r\n .row \r\n h6.fw-bold Próxima aplicación del pago 03 / Enero /2022\r\n .row(style=\"margin: 10px 0 0 -10px\") \r\n .col-md-4\r\n .row(style=\"margin: 0 0 10px -15px\")\r\n h6.fw-bold Contrato\r\n .row(v-for=\"contrato in informacionContratosGuardados.numeroContrato\")\r\n p {{ contrato }}\r\n .col-md-4\r\n .row(style=\"margin: 0 0 10px -15px\")\r\n h6.fw-bold Cuota *\r\n .row(v-for=\"cuota in informacionContratosGuardados.cuota\") \r\n p {{ filtros.filtroDivisa(cuota) }} mxn\r\n .col-md-4\r\n .row(style=\"margin: 0 0 10px -15px\")\r\n h6.fw-bold Adeudo\r\n .row(v-for=\"cuota in informacionContratosGuardados.cuota\") \r\n p {{ filtros.filtroDivisa(0) }} mxn\r\n .row(style=\"margin: 40px 0 40px 0\") \r\n .col-md-7\r\n .col-md-2\r\n button(\r\n style=\"width: 100%; border-radius: 10px; border: 1px solid rgb(235, 129, 19); color: rgb(235, 129, 19); padding: 8px 30px; background-color: white\"\r\n v-on:click=\"regresarFormularioDomiciliacion()\"\r\n ) Cancelar\r\n .col-md-3\r\n button.fw-bold(\r\n :form=\"componentId + 'form'\"\r\n style=\"width: 100%; border-radius: 10px; padding: 8px 60px; background-color: rgb(235, 129, 19); color: white; border: none\"\r\n v-on:click=\"guardarDatosDomiciliacion()\"\r\n ) Continuar\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { Cliente, Core } from \"@/servicios/api\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { onMounted, reactive, ref } from \"vue\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { useStore } from \"@/store\";\r\nimport filtros from \"@/composables/filtros\";\r\nimport $, { isEmptyObject } from \"jquery\";\r\nimport GenerarPin from \"../components/GeneradorPin.vue\";\r\nimport * as bootstrap from \"bootstrap\";\r\ninterface MediosContacto {\r\n valor: string;\r\n tipo: number;\r\n}\r\ninterface Archivos {\r\n nombreArchivo: File;\r\n tipoDocDomiciliacion: Core.Enums.TipoDocumentoDomiciliacion;\r\n}\r\nconst $store = useStore();\r\nconst archivosDomiciliacion = ref([] as Archivos[]);\r\nconst mediosContactos = ref([] as MediosContacto[]);\r\nconst datosCliente = ref({} as Cliente.Cliente.BodyDomiciliacion);\r\nconst bancoId = ref(1);\r\nconst bancos = ref([] as Cliente.Cliente.BodyBanco[]);\r\nconst nombre = ref(\"\" as string | undefined);\r\nconst nombreTercero = ref(\"\");\r\nconst apellidoPaterno = ref(\"\" as string | undefined);\r\nconst apellidoMaterno = ref(\"\" as string | undefined);\r\nconst cuentaSeleccionada = ref(false);\r\nconst componentId = utilidades.generarId();\r\nconst form = ref(null as HTMLFormElement | null);\r\nconst formularioValidado = ref(false);\r\nconst listaContratos = ref([] as Cliente.Financiamiento.InformacionFinanciamientoContrato[]);\r\nconst mostrarFormulario = ref(true);\r\nconst contratosGuardados = ref([] as Cliente.Financiamiento.InformacionFinanciamientoContrato[]);\r\nconst archivoID = ref({} as File);\r\nconst archivoEdo = ref({} as File);\r\nconst archivoIDTercero = ref({} as File);\r\nconst archivoEdoTercero = ref({} as File);\r\nconst formato = ref({} as File);\r\nconst motsrarNombreArchivoID = ref(true);\r\nconst motsrarNombreArchivoEdo = ref(true);\r\nconst motsrarNombreArchivoIDTercero = ref(true);\r\nconst motsrarNombreArchivoEdoTercero = ref(true);\r\nconst motsrarNombreArchivoFormato = ref(true);\r\nconst informacionContratosGuardados = reactive({\r\n numeroContrato: [] as string[],\r\n cuota: [] as number[],\r\n sumaCuotas: 0\r\n});\r\nconst telefonoTercero = ref(\"\");\r\nconst validarPin = ref(false);\r\nconst contratosDomiciliados = ref<boolean>()\r\nasync function getValidacion(value: boolean) {\r\n validarPin.value = value;\r\n let archivosEnviar = [] as Archivos[];\r\n if (validarPin.value) {\r\n if (cuentaSeleccionada.value != \"tercero\") {\r\n datosCliente.value.nombreTercero = \"\";\r\n archivosEnviar = archivosDomiciliacion.value.filter((elemento) => {\r\n elemento.tipoDocDomiciliacion == Core.Enums.TipoDocumentoDomiciliacion.Identificacion_Oficial_Tercero ||\r\n Core.Enums.TipoDocumentoDomiciliacion.Estado_Cuenta_Tercero ||\r\n Core.Enums.TipoDocumentoDomiciliacion.Formato_Domiciliacion_Tercero;\r\n return elemento;\r\n });\r\n } else {\r\n archivosEnviar = archivosDomiciliacion.value.filter((elemento) => {\r\n elemento.tipoDocDomiciliacion == Core.Enums.TipoDocumentoDomiciliacion.Estado_Cuenta_Cliente ||\r\n Core.Enums.TipoDocumentoDomiciliacion.Identificacion_Oficial_Cliente;\r\n return elemento;\r\n });\r\n }\r\n let div = document.getElementById(\"spinner\") as HTMLDivElement;\r\n div.style.display = \"block\";\r\n datosCliente.value.cuentaDomiciliacionId = 0;\r\n let respuesta = await api.Cliente.Cliente.DomiciliacionApi.GuardarDatosDomiciliacion(datosCliente.value);\r\n $store.agregarToast(respuesta.data);\r\n let id = respuesta.data.data as string;\r\n archivosEnviar.forEach(async (x) => {\r\n let resp = await api.Cliente.Cliente.DomiciliacionApi.GuardarDocumentosDomiciliacion(\r\n x.nombreArchivo,\r\n id,\r\n x.tipoDocDomiciliacion\r\n );\r\n\r\n $store.agregarToast(resp.data);\r\n });\r\n contratosGuardados.value.forEach(async (x) => {\r\n await api.Cliente.Cliente.DomiciliacionApi.GuardarDomiciliacionContrato(x);\r\n });\r\n let respNotificaciones = await api.Cliente.Cliente.DomiciliacionApi.NotificarUsuarios();\r\n $store.agregarToast(respNotificaciones.data);\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#codigoModal\") as HTMLDivElement)?.hide();\r\n div.style.display = \"none\";\r\n }\r\n}\r\nasync function obtenerDatosCliente() {\r\n cuentaSeleccionada.value = true;\r\n let informacionCliente = (await api.Cliente.Cliente.HomeApi.ObtenerInformacion()).data;\r\n nombre.value = informacionCliente.nombre;\r\n apellidoPaterno.value = informacionCliente.apellidoPaterno!;\r\n apellidoMaterno.value = informacionCliente.apellidoMaterno!;\r\n mediosContactos.value = [];\r\n if (informacionCliente.cliente.telefono3 != null)\r\n mediosContactos.value.push({ valor: informacionCliente.cliente.telefono3!, tipo: 0 });\r\n if (informacionCliente.cliente.email1 != null)\r\n mediosContactos.value.push({ valor: informacionCliente.cliente.email1!, tipo: 1 });\r\n}\r\nfunction obtenerDatosTercero() {\r\n cuentaSeleccionada.value = \"tercero\";\r\n}\r\n\r\nfunction obtenerArchivoIdTercero(event: any) {\r\n let file = event.target.files[0];\r\n archivoIDTercero.value = file;\r\n let nuevoDocDomi = {} as Archivos;\r\n nuevoDocDomi.nombreArchivo = file;\r\n nuevoDocDomi.tipoDocDomiciliacion = Core.Enums.TipoDocumentoDomiciliacion.Identificacion_Oficial_Tercero;\r\n archivosDomiciliacion.value.push(nuevoDocDomi);\r\n motsrarNombreArchivoIDTercero.value = isEmptyObject(archivoIDTercero.value);\r\n}\r\nfunction obtenerArchivoID(event: any) {\r\n let file = event.target.files[0];\r\n archivoID.value = file;\r\n let nuevoDocDomi = {} as Archivos;\r\n nuevoDocDomi.nombreArchivo = file;\r\n nuevoDocDomi.tipoDocDomiciliacion = Core.Enums.TipoDocumentoDomiciliacion.Identificacion_Oficial_Cliente;\r\n archivosDomiciliacion.value.push(nuevoDocDomi);\r\n motsrarNombreArchivoID.value = isEmptyObject(archivoID.value);\r\n}\r\nfunction visualizarArchivo(archivo: Blob) {\r\n let leer = URL.createObjectURL(archivo);\r\n return leer;\r\n}\r\nfunction obtenerArchivoEdoTercero(event: any) {\r\n let file = event.target.files[0];\r\n archivoEdoTercero.value = file;\r\n let nuevoDocDomi = {} as Archivos;\r\n nuevoDocDomi.nombreArchivo = file;\r\n nuevoDocDomi.tipoDocDomiciliacion = Core.Enums.TipoDocumentoDomiciliacion.Estado_Cuenta_Tercero;\r\n archivosDomiciliacion.value.push(nuevoDocDomi);\r\n motsrarNombreArchivoEdoTercero.value = isEmptyObject(archivoEdoTercero.value);\r\n}\r\nfunction obtenerArchivoEdo(event: any) {\r\n let file = event.target.files[0];\r\n archivoEdo.value = file;\r\n let nuevoDocDomi = {} as Archivos;\r\n nuevoDocDomi.nombreArchivo = file;\r\n nuevoDocDomi.tipoDocDomiciliacion = Core.Enums.TipoDocumentoDomiciliacion.Estado_Cuenta_Cliente;\r\n archivosDomiciliacion.value.push(nuevoDocDomi);\r\n motsrarNombreArchivoEdo.value = isEmptyObject(archivoEdo.value);\r\n}\r\nfunction cargaFormato(event: any) {\r\n let file = event.target.files[0];\r\n formato.value = file;\r\n let nuevoDocDomi = {} as Archivos;\r\n nuevoDocDomi.nombreArchivo = file;\r\n nuevoDocDomi.tipoDocDomiciliacion = Core.Enums.TipoDocumentoDomiciliacion.Formato_Domiciliacion_Tercero;\r\n motsrarNombreArchivoFormato.value = isEmptyObject(formato.value);\r\n}\r\nfunction capturaDatosDomiciliacion() {\r\n datosCliente.value.telefonoTercero = \"\";\r\n datosCliente.value.nombreTercero = \"\";\r\n\r\n bancos.value.forEach((x: any) => {\r\n if (x.bancoId == datosCliente.value.banco.bancoId) datosCliente.value.banco.nombre = x.nombre;\r\n });\r\n\r\n listaContratos.value.forEach((x) => {\r\n if ($(\"#\" + x.contratoId).prop(\"checked\")) {\r\n informacionContratosGuardados.numeroContrato.push(x.numeroContrato || \"\");\r\n informacionContratosGuardados.cuota.push(x.montoCuotaVigente!);\r\n informacionContratosGuardados.sumaCuotas += x.montoCuotaVigente!;\r\n contratosGuardados.value.push(x);\r\n }\r\n });\r\n\r\n mostrarFormulario.value = false;\r\n}\r\nfunction regresarFormularioDomiciliacion() {\r\n informacionContratosGuardados.numeroContrato = [];\r\n informacionContratosGuardados.cuota = [];\r\n contratosGuardados.value = [];\r\n mostrarFormulario.value = true;\r\n}\r\nasync function guardarDatosDomiciliacion() {\r\n bootstrap.Modal.getOrCreateInstance(document.querySelector(\"#mediosContactoModal\") as HTMLDivElement)?.show();\r\n}\r\nonMounted(async () => {\r\n formularioValidado.value = true;\r\n datosCliente.value = (await api.Cliente.Cliente.DomiciliacionApi.InformacionDomiciliacion()).data;\r\n bancos.value = (await api.Cliente.Cliente.DomiciliacionApi.ObtenerBancos()).data;\r\n listaContratos.value = (await api.Cliente.Cliente.FinanciamientoApi.ObtenerContratos(1)).data;\r\n listaContratos.value = listaContratos.value.filter((e) => {\r\n return e.esDomiciliado != Cliente.Financiamiento.TipoDomiciliacion.Proceso;\r\n });\r\n listaContratos.value.forEach((x) => {\r\n if (x.esDomiciliado == Cliente.Financiamiento.TipoDomiciliacion.Domiciliado) contratosDomiciliados.value = true;\r\n });\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins(:class=\"{ 'was-validated': formularioValidado }\")\r\n .row.mt-2(style=\"margin-top: -27px\")\r\n .col-md-5.mt-2.mb-2\r\n .p-3.fw-bold.text-secondary.text-white.fs-5(style=\"background: #5935df; border-radius: 8px 8px 0 0\") Reportar Siniestro de vida\r\n .card(style=\"border-radius: 0 0 8px 8px\"): .card-body\r\n .row.justify-content-left\r\n .col-12.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Nombre del beneficiario.\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n v-model=\"CuerpoCorreo.nombreBeneficiario.value\"\r\n required\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Campo requerido.\r\n .col-12.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Correo Electrónico\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"email\"\r\n v-model=\"CuerpoCorreo.correo.value\"\r\n required\r\n pattern=\"[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{1,5}\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Correo Electrónico invalido.\r\n .col-12.mt-4\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Nombre completo del titular\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"text\"\r\n v-model=\"CuerpoCorreo.nombreTitular.value\"\r\n required\r\n pattern=\"[a-zA-ZñÑéÉáÃÃÃóÓúÓ ]+\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Campo requerido.\r\n .col-12.mt-4\r\n .row\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Teléfonos de contacto beneficiario\r\n .col-6\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n v-model=\"CuerpoCorreo.telefono1.value\"\r\n required\r\n pattern=\"[0-9]{10}\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .invalid-feedback Número teléfonico invalido.\r\n .col-6\r\n input.form-control(\r\n :form=\"componentId + 'form'\"\r\n type=\"tel\"\r\n v-model=\"CuerpoCorreo.telefono2.value\"\r\n pattern=\"[0-9]{10}\"\r\n style=\"border-radius: 90px\"\r\n )\r\n .col-12.text-center.mt-4\r\n form.text-center(ref=\"formDom\" novalidate :id=\"componentId + 'form'\" @submit.prevent=\"EnviarCorreoSinietro()\"): button.btn.btn-primary.text-white.px-5.fw-bold(\r\n style=\"border-radius: 20px; background: #ffa000\"\r\n ) Enviar\r\n .col-12.text-center.mt-4\r\n router-link.fw-bold(:to=\"{ name: 'cliente-cliente-login' }\" style=\"color: #ffa000\") Regresar\r\n .col-md-5.mt-2.offset-md-1\r\n .card(style=\"border-radius: 0 0 0px 0px\"): .card-body\r\n .div.justify-content-between.px-2(style=\"\")\r\n .row\r\n .col-12\r\n label.form-label.fw-bold.fs-5(style=\"color: #2f2d74\") Contactar al Ãrea de Seguros.\r\n p(style=\"color: #ffa000\") \r\n b Atención de Seguros (Experiencia al Cliente)\r\n .row\r\n .col-7\r\n p(style=\"color: #2f2d74; font-size: 12px\") \r\n b Tel: +52 55 5511 9910 ext 6158 y 6161\r\n p(style=\"color: #2f2d74; font-size: 12px\") \r\n b Whatsapp: +52 55 7665 9885\r\n p(style=\"color: #2f2d74; font-size: 12px\") \r\n b Correo: atencionseguros@hircasa.com.mx\r\n .col-5.d-flex.align-items-end.p-2.mb-2\r\n img.img-fluid.img-fluid(src=\"../../../assets/LogoColor2.png\" style=\"height: 60px\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { ref, reactive, toRefs, toRaw } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { Cliente } from \"@/servicios/api\";\r\nimport { useRouter } from \"vue-router\";\r\nconst $router = useRouter();\r\n\r\n//#region Data\r\nconst componentId = utilidades.generarId();\r\nconst formularioValidado = ref(false);\r\nconst formDom = ref(null as null | HTMLFormElement);\r\n\r\n//Creación de un objeto EnviarCorreoSiniestroVidaBody\r\nconst reactiveCorreoSiniestro = reactive({\r\n nombreBeneficiario: \"\",\r\n correo: \"\",\r\n nombreTitular: \"\",\r\n telefono1: \"\",\r\n telefono2: \"\"\r\n} as Cliente.Cliente.Siniestro.EnviarCorreoSiniestroVidaBody);\r\nconst CuerpoCorreo = toRefs(reactiveCorreoSiniestro);\r\n//#endregion\r\n\r\n//#region Methods\r\nfunction EnviarCorreoSinietro() {\r\n formularioValidado.value = true;\r\n if (formDom.value!.checkValidity()) {\r\n var res = api.Cliente.Cliente.SiniestroApi.EnviarCorreoSiniestroVida(toRaw(reactiveCorreoSiniestro));\r\n $router.push(\"cliente-cliente-login\");\r\n }\r\n}\r\n//#endregion)\r\n</script>\r\n","<template lang=\"pug\">\r\n.container.ff-poppins.pt-3: .row\r\n .col-md-12: .Principal(style=\"height: 500px\")\r\n .row.justify-content-md-start\r\n .col-md-7.m-4: .card.mb-2(style=\"margin: 36% 5% 5% 5%; border-radius: 25px\"): .card-body.bg-primary(style=\"border-radius: 25px\")\r\n h2.text-white.text-justify.fw-bold.fs-2 En HIR Casa estamos más cerca de ti\r\n p.text-white(style=\"text-align: justify; font-size: 14px\") Te invitamos a conocer información que será útil en la vida de tu financiamiento a través de nuestro portal, en donde podrás encontrar y realizar de una forma ágil los servicios que tenemos a tu disposición.\r\n .col-md-12: .row(style=\"margin: 0px 0px 2%\")\r\n Tarjeta-Guia(:tarjeta=\"cards\")\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport * as bootstrap from \"bootstrap\";\r\n//#region data\r\nlet modalAltaPortal = null as null | bootstrap.Modal;\r\nlet cards = [\r\n {\r\n titulo: \"Alta portal cliente\",\r\n imagen: \"IAltaPortal.svg\",\r\n descripcion: `\r\n\t\t<p>Obtener la información de tu financiamiento a través de nuestro sitio, es muy fácil.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a><a>en el apartado </a><a href=\"login\">Portal Cliente </a><a>crea tu cuenta.</a></p>\r\n\t\t\t<li><p>Para la creación de tu usuario y contraseña lo único que necesitas es registrar tus datos.</p></li>\r\n\t\t\t<li><p>Considera que tu cuenta de correo electrónico debe ser el mismo que nos proporcionaste.</p></li></ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Recuperación y cambio de password\",\r\n imagen: \"IPassword.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Si necesitas cambiar tu contraseña por alguna razón o bien no la recuerdas, el proceso para hacer una modificación es sencillo.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Tienes la opción <strong style=\"color: #494d64\">“¿Has olvidado tu contraseña?</strong>â€</p></li>\r\n\t\t\t<li><p>Te solicitará ingresar tu correo y posteriormente te llegará un link para recuperación.</p></li>\r\n <li><p>Accede para continuar el proceso estableciendo la contraseña que elijas.</p></li></ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Programa Recicla\",\r\n imagen: \"IProgramaRecicla.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>HIR Casa te invita a participar en su programa Recicla; nuestro objetivo es cuidar el medio ambiente, por eso promovemos el envÃo de estado de cuenta a través de correo electrónico para seguir contribuyendo como una Empresa Socialmente Responsable.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Puedes activar tu participación accediendo al mensaje de invitación que se muestra al iniciar tu sesión.</p></li>\r\n <li><p>Acepta los términos y condiciones.</p></li>\r\n <li><p>Da click para activar tu participación a esta campaña.</p></li></ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Descarga Estado de Cuenta\",\r\n imagen: \"IEstadoCuenta.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Tienes una ruta rápida para descargar el estado de cuenta vigente en un solo archivo.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de Mi Financiamiento.</p></li>\r\n <li><p>Elige el mes que desees descargar (puedes visualizar tu estado de cuenta vigente o de 11 meses atrás).</p></li>\r\n <li><p>Da click en descarga tus estados de cuenta.</p></li></ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Aclaración de Pagos\",\r\n imagen: \"IAclaracionPagos.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Puede solicitar una aclaración de pago desde el portal.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Da clic en apartado de Aclaraciones.</p></li>\r\n\t\t\t<li><p>Elige tu tipo de aclaración.</p></li>\r\n <li><p>Realiza la descripción.</p></li>\r\n <li><p>Adjunta tus documentos.</p></li>\r\n <li><p>EnvÃala.</p></li></ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Consulta y/o actualiza tus datos\",\r\n imagen: \"IDatos.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Puedes consultar o actualiza desde el sitio web <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a> los datos que tienes registrados.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve a Mi Perfil.</p></li>\r\n </ul>\r\n <p>Puedes consultar los datos generales proporcionados, tales como: </p>\r\n <p>-Nombre</p>\r\n <p>-Domicilio</p>\r\n <p>-Medios de contacto</p>\r\n <br>\r\n <p>Si asà lo deseas puedas actualizar:</p>\r\n <p>-Domicilio</p>\r\n <p>-Medios de contacto</p>\r\n <p>-Password</p>\r\n <ul>\r\n\t\t\t<li><p>Da clic en el botón Editar información.</p></li>\r\n\t\t\t<li><p>Actualiza el dato deseado.</p></li>\r\n <li><p>Ingresa los documentos requeridos.</p></li>\r\n </ul>\r\n\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Monto a pagar\",\r\n imagen: \"IMonto.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Podrás visualizar el total que debes de cubrir de la(s) cuota(s) vigente(s) y si llegases a tener algún vencimiento.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Mi Financiamiento.</strong></p></li>\r\n <li><p>En el lado izquierdo de tu pantalla podrás vizualizar el monto total a pagar.</p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Descuentos\",\r\n imagen: \"IDescuentos.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Puede consultar el/los beneficio(s) de descuento(s) que tienes activos (si estos aplicaran).</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Mi Financiamiento.</strong></p></li>\r\n <li><p>Da click en <strong style=\"color: #494d64\">mis descuentos del mes.<strong></strong></p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Seguimiento aclaración de pago\",\r\n imagen: \"IAclaracionPagos.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>En este apartado se puede visualizar el seguimiento de las aclaraciones que tengas por folio y estatus.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Mi Financiamiento.</strong></p></li>\r\n <li><p>Da click en <strong style=\"color: #494d64\">seguimiento aclaración.</strong></p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Resultados del evento de Adjudicación\",\r\n imagen: \"IAdjudicacion.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Puedes consultar la publicación de todos los clientes que han adjudicado en el mes.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Adjudicaciones.</strong></p></li>\r\n <li><p>Selecciona el mes que deseas consultar (resultados de un año) o bien da click en la publicación del mes para visualizarlo desde la publicación del periódico.</p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Calendario de Evento de Adjudicación\",\r\n imagen: \"ICalendario.svg\",\r\n descripcion: `\r\n\r\n\t\t<p> Si quieres conocer las fechas de nuestros próximos eventos de adjudicación consulta el calenadario.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Adjudicaciones.</strong></p></li>\r\n <li><p>Verifica a través del calendario las fechas de nuestros eventos.</p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Información complementaria\",\r\n imagen: \"IInformacion.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>De manera general, complementaria y gráfica te informamos los requisitos, entradas, documentos de cada uno de los trámites especificados, con la finalidad de facilitarte lo que desees realizar.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Material de apoyo.</strong></p></li>\r\n <li><p>Consulta la información de tu interés</p></li>\r\n </ul>\r\n <p><strong style=\"color: #494d64\">Bienvenida. </strong>Información para utilizar tu financiamiento.</p>\r\n <p><strong style=\"color: #494d64\">Pagos. </strong>Formas de pago.</p>\r\n <p><strong style=\"color: #494d64\">Trámites. </strong>Los trámites que puedes realizar.</p>\r\n <p><strong style=\"color: #494d64\">Liberación. </strong>Requisitos para liberar tu hipoteca.</p>\r\n <p><strong style=\"color: #494d64\">Adjudicación. </strong>Métodos y estrategias de adjudicación.</p>\r\n <p><strong style=\"color: #494d64\">Preventas. </strong>Conoce como adquirir un inmueble en preventa.</p>\r\n <p><strong style=\"color: #494d64\">Liquidación. </strong>Valida como puedes liquidar de forma anticipada.</p>\r\n <p><strong style=\"color: #494d64\">Titulación. </strong>Da seguimiento documental y administrativo a tu adjudicación.</p>\r\n <p><strong style=\"color: #494d64\">Seguros. </strong>Conoce cada uno de los seguros y reporta un siniestro de ser necesario.</p>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Seguro de Vida\",\r\n imagen: \"ISeguroV.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Te damos a conocer los detalles tu seguro vida.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Consulta el apartado de Seguros para visualizar:</p></li>\r\n </ul>\r\n <p>- Estatus de tu solicitud.</p>\r\n <p>- Coberturas.</p>\r\n <p>- Prima del pago mensual (el monto se cambia de forma mensual basándonos en el factor de actualización).</p>\r\n <p>- Información de tu cotitular (si aplica).</p>\r\n <p>- Contratos.</p>\r\n <p>- Si tienes un reporte de siniestro activo podrás ingresar tu documentación.</p>\r\n <br>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Seguro de Daños\",\r\n imagen: \"ISDanios.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Te damos a conocer los detalles de tu seguro daños.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Debes ingresar a <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Ve al apartado de <strong style=\"color: #494d64\">Mi Financiamiento.</strong></p></li>\r\n <li><p>Consulta el apartado de Seguro de Daños para visualizar:</p></li>\r\n </ul>\r\n <p>- Datos de la aseguradora.</p>\r\n <p>- Coberturas.</p>\r\n <p>- Prima del pago mensual (el monto se cambia de forma mensual basándonos en el factor de actualización).</p>\r\n <p>- GarantÃas.</p>\r\n <p>- Si tienes un reporte de siniestro activo podrás ingresar tu documentación.</p>\r\n\t</div>\r\n `\r\n },\r\n {\r\n titulo: \"Siniestros\",\r\n imagen: \"ISiniestros.svg\",\r\n descripcion: `\r\n\r\n\t\t<p>Si tienes un reporte de siniestro activo podrás cargar tu documentación.</p>\r\n\t\t<h6>¿Cómo hacerlo?</h6>\r\n\t\t<ul>\r\n\t\t\t<li><p>Comunicate al área de seguros para reportar un siniestro, puedes hacerlo por medio del:</p>\r\n <p><strong style=\"color: #494d64\">Tel. 55 5511 9910 ext. 6158 y 6161</strong></p>\r\n <p><strong style=\"color: #494d64\">WA. 55.7665.9885 opción 4</strong></p>\r\n <p><strong style=\"color: #494d64\">Mail. atencionseguros@hircasa.com.mx</strong></p></li>\r\n <li><p>Una vez que tengas tu reporte, ingresa al sitio <a href=\"https://hircasa.com.mx/\">www.hircasa.com.mx </a></p></li>\r\n\t\t\t<li><p>Logueate usando tu usuario y contraseña.</p></li>\r\n\t\t\t<li><p>Consulta el apartado de Siniestros para visualizar</strong></p></li>\r\n <li><p>Cargar tus documentos previamente escaneados a color y en formato PDF</p></li>\r\n </ul>\r\n\t</div>\r\n `\r\n }\r\n];\r\n//#endregion\r\n//#region Metodos\r\nfunction MostrarModalAltaPortalCliente() {\r\n modalAltaPortal?.show();\r\n}\r\nfunction CerrarModal() {\r\n modalAltaPortal?.hide();\r\n}\r\n//#endregion\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.Principal {\r\n background-image: url(\"../assets/Guia/img_principal_guiarapida\\ 1.png\");\r\n width: 100%;\r\n height: auto;\r\n}\r\n\r\n.Principal p {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-size: 18px;\r\n margin: 2% 2% 2% 2%;\r\n}\r\n\r\n.Principal h2 {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 40px;\r\n margin: 2% 2% 2% 2%;\r\n}\r\n\r\nh4 {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 24px;\r\n line-height: 150%;\r\n text-align: center;\r\n}\r\n\r\n.iconop {\r\n height: 100px;\r\n width: auto;\r\n}\r\n\r\n.componenteModal img.iconop {\r\n height: 250px;\r\n width: auto;\r\n}\r\n\r\n.componenteModal h4 {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 28px;\r\n color: #2f2d74;\r\n text-align: justify;\r\n}\r\n\r\n.componenteModal h6 {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n color: #2f2d74;\r\n}\r\n\r\n.componenteModal p {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 16px;\r\n color: #6e7599;\r\n}\r\n\r\n.componenteModal ul {\r\n list-style-type: disc;\r\n color: #ffa000;\r\n}\r\n\r\nli label,\r\np {\r\n font-family: Poppins;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: #6e7599;\r\n}\r\n</style>\r\n","export default \"__VITE_ASSET__7147ec61__\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAvtSURBVHgB7Z2/cxvHFccfNIxSRDOh3FiNrPPAjdyQKuzGnhFYOU1G9KRKRegvIPQXCPkLTP4FBKtUmVCTyhXhQk1cmG7kxp6clCZuZBROEWcmyH539xGLw93hfuze7R7vM3MECILgcb/33r59+253QAGzPKNd8RCJY18+DuiB/j7Sb9nVR5JYHAt9xLSk1/o1HFeDp/L1IBlQQAgBIdxInPWefFwJZ5srUkJ/JR7nQuArCgSvBdUWuC/O8kg8HlK6tTVBLI65EPiFEPeCPMZLQYWQIw9EzALu+EKIey7EnZNneCOotMZbdCwaakL+iZgF3PKfSLnlmDygdUGFkAhmjsXTMYUjZBoziNu2sK0JqoV8TkrILtGqsI0LGqhrLc+ApvQ/Om16CNSooELMQ/EXvyB3ww3fiLW1zqghGhFUu9czUmPHm0hjbvgWOWZ5LoYfA/qGbq6YYCza4FJc2GNyjDMLlX2lCnom1GNyoq3VSd/qRFDtYi/p5vSVZUHfeuDCBVt3uTrLAxcbUU8WkXbBI7KMVUFFf3msLbO7wxF7sKhWuyRrggoxnws3ckI95RDDONl21j7OAlrMKfVURyQiBkcyL1zzY2rSi2kRC6LWErQX0wE1Ra0sqAyA+j7TDUt6JoY0ldq2kqB6aHJJPe5Q49Q5laS0oNaSBnf3id7Zp+D4RSR4fo6JfnJeZrQQoj4qm3woJahO59VLGkDEj8SEy70RBQ1EvRJd3Q8zckisRS2cJtyhMqjcbERVGR4RfTpbfY9GCY3bu+q4E4n/RUwg3XlA9G3t0UYWXATwrOgvFLZQOVOgpsCqgQb4wz/U83/NiV4+DVNQAC/zydmqy/jyQP1PrhjQWES+58XeWgAr/eZnl8rNvrkguvycOgH/T7gw//ZI9a9uKNyfFnO5dV0tXBT3mV9neI/7h0TvPVGW7Bu4ACEWzg39/22dquZzxSMsFv+bG6+zq73jwbY3bhVUT8qOqQ53tWt6e7X5D8NtHfzVTyEZ9izyojtMfw9ex//iLlAaoYRnW6F3rqDGJHU9+IpOuiQ0ANwWfo6foR/68SuXrqs8uAC5f/xOjPX/Ha/+H4Dnv4lW3sVloIRE/pmsAc5soHwLVdV5EdXldsZsGiwTP0OjIbAIIUh6k2EgX4tZsI+E4B8eE+1P1YVpP1CKSFWATLPekCmoDIRc5mmH45WbzRMTVz8PFdoC5wbL3AZEfWdPuei9524i3wEdC21mWQHSTs4vWpujS+WDI/X4/WxTTIj3UFzpH07aFdIE3QCsE640z5O8OlWCusuCcTf4NO2HqRPc0jpdV7SzUG+/XX8dVvv7b5Tb8kVMgHP5YKzOLSswApwSlMmHB+SIsdZog3QLdW2dICtQQpAEUfH6d6fpFtwkEBHuk7sHnDf6/pfi9e8LjfVdMaGUisoNC23EOrN4OFmJiYH61bT9QAkX1EvDu/EF+Mls1W20wYCO9P2za6S53BG1BSJE4G6AXg0EN3w+6EPfarfarqgQc7uFNuJu0+CEN3jrfGqqOv9ZqKjcB1HVbZhrrAmq60QjagMzALIhqMuhzi/eiLqbrO1dt1B1G3y4QEAEMJjV+eNP6kBUOhyTdXwRNaFZ0uUeUoi8O1KRJwTEcMfMC2M8iHQcREYC3WbO2A9RD83g6FpQee9mSBXvMvkwURb4u8vV2BCNjMDlz3dVpIyhBQIaCIkhCITF0Gg4JiskRd2bUsOolWI0q3HogJ5QCMAakQiHOGYfiUgUQprpNjQyxosA70fFBLI4fOw/V9kfjHfrRNUsKi6UNuqklNud46npckfkMxASDQZr5JSgaY3bqgYwnsR7/vL+utXis4q4Yx5/ZgVaSUsF9xubyL/uKqWgeoWuiHxlOFZC8iQ5hMOkM8RB8iGZbWJ3jN9LAiFhtXDHSBiwAJzWy7IwTlG+l+PIkqJ+/EV+mtAeu1rDawsdkc9wwgHuEQ2GA8+TQnJwBItDY+YFQ/hdWC2EZRFwIQzH6efAk9a4qPICHxaVXbhZe+SWEb4oQQf0mHyGhYOVJN0qWyO7Y1gEu2NQJBjCZ2blls338FwootmHE8o9XxYVn8v5aZeo9Q+vg6KIfObNC2UZsFRUDaDBigRHaESem+TnHAzx+9Do+Cxu8LzyEbhovA8WBw+AzymSBMH5wVK/3FoSVIcRvuxcL5DoM2hkNB4aBkVaLA7DMzOvTtYtDGLBreLA+4dj5S7ZanGY1mnmbNPgSQOMdYdHm+eRB19M7so9I2gJC/VbTMDRLMSECAysA4n8Io2E90irnKqG5eo9U5CXT6kQCMRwwFIhalbkC8u/93hl/Sgyc1m/K0SFoBGFAFvfu49X/SRcMbvWzwrcO8UWBovlMSlb5Q/n5ceiuKDyXC7+Dk/Ym5MP7tgPR1DA7jPp6sw+cBuoIvj5tfGZ527vT8FFggsPrv72b8kxAVloEeQYM8NtFrFgVzQ1tzugBzt6nfZuYNbQ3kwijEN3qacr9IJ2jW71oRhGDMebr/tUDuqW3XI3/PoOhPu0+i2sHaAjgv44LxYM4X4Tc8jSQbohKN/s1ON+AeSeZoGFIpsdZtSA2ZeqRVk+32BcgzAF5X7QRu3tfxfUIeIw+1DMmNjIvyJZ73OVfnkWEDSm0MaiCIJCXRLHLYtbeu/Mnm4QI8qNqacbCOPsBe0WMigKKyrA2gu+reLJNU3t9+sxB0VhgCHKxyfkJwO1Ckq7XO1gEaPlLJBIF5aAigQsdeMbbpdZLYLcDF6NQ7F5+CCQoQtqino20aMVzuV2anR9Q5njyy3zm56gmeOLFFT4Xlhop5KaN4xYa2jMhy7pRRBrLDRx409ZEKwVreB3w5yfmMn5mTj8FxRi+jj15f42h2xgjBpTUHa7fk+loTIBiYU2Cr/yEgftzdoszEWRrwWV49GzANxuP9OS5ML8JlmCMqOesFiu7xaxNsGNrZlE1qgdt8sb23SrgsA1cXI7rc2KhSWdtrbeHyoRtoG+81eWrjdcPD6tb1+W5eYuhmklKMh+Y5UKe1aKulnAwUxWI3KNUF4fiXstbUa5f3+mbvMPk3nyhY0yTrnjwLLYLj6F4bvCeC2+NPAzXthi22fZ5NdhFjwKUtedzyoSYyu1B26plwtfTJSFJocdbJ3bhiN9QbVimb5pbGqhtVTetpXyqiPAt/XkwyNzV4i8yvkp2c7vYqGJ5CZ2Ie4h2jbL7C2dMwXVVnpKtsF8JpZ0e6U/Wq490FtrYYSYeZvabbu3BX1pTC7AEIX70r12RkkBEhPl782dK6iOeAtvRloKXnsIIFDCcKQnH2Wdud3g1rvPdOJ3Ti7A2kMsqul23W1gEzIIhGbb3lTsdsKl3JbJTUoFgRKvYcvceZ86xT29NmZyF6nixHmBkEkhQXWA5Mb1Al7Dlle77FKfiiieF8n65wVVYksgZFL4hl9p7i6iXhN2v2gArF4ZevTL6/eCqmsoiTYv4mqZAZVAbxCL6CUiVyBAwsKKgBshxHUR4GbZMqvvjxrrvbcLd3elBAV6g3WI6s58ICpueejCXda4IJPJlGJAzIOirpYpLSiQu/kMyO3iebxA4/0n4bleDMngVdBnVq0zUmLOqSSVBJV/74wm2BOaeuwjAlAhZqU5vcqroMg/WDCU7imBimgrT9BWttDrv38mkvhtVTh0DSXmlGpQW1B5Hr2o9bEgJrAiKOhFrYElMYE1QUEfKFWgRgCUhlVBgR7SYEnMiHrywEzW51WGJnlYFxTo5APGqRH1pFEpaVAEJ4s36mT+I+e53xBBm6h0XkwOcGKhJsJaxzpYiuhms9D95Ywc4lxQIF0wySjY/9sV3TDHnLIrqzRpRFDmBlprrK2y4kRoeRoVFOjN8yYdH7MudPxwUmbqywaNC8p02A3PylQY2KY1QZmOCMv3A520JSTTuqCMFnYUWB/bmmvNwhtBTWS2iWQAhR3MfZvdhnAXsEjbWR4beCmoiRD3UDwc6n3CI2qHaxFJr6lHnuK9oCZCXNzZNDLEdXWnU0xq7IhC2jkv6hQCQQmaxNg/PJKH2joTz3f1EaX82oJWReMxqbHia/0cwsU+W+A2/g+mUmYVaTdJyQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAs3SURBVHgB7Z29chxFEMd7XcIEuIozCSTGS0FiJZIDk0AVp4iIslw8gM5PoPMTSDwB0hPoHBFRyEVEpCNwAgFyYhIoFkggMQogAKo45j8zrVutdvf2Y2Z3ZjW/qtWd7kO62/92T09Pz0xEHrM4opG4icWxKW8juq1/j/VLRvrIkojjTB8JLehn/RiO0+ihfNxLIvIIISCEG4tPvSFvl8KZ5pSU0F+L27kQ+JQ8wWlBtQVuik+5I263Kd/auiARx1wI/ESIe0wO46SgQsixAyIWAXd8LMR9LMSdk2M4I6i0xmu0K07UlNwTsQi45U9IueWEHKB3QYWQCGZ2xd0J+SNkHjOI27ewvQmqhdwjJeSQ6FXYzgX11LXWJ6J9+o8Ou+4CdSqoEHNb/MdPyV53wzUSba0z6ohOBNXu9YhU3/Eq0pkbvkaWWTwW3Y+IvqOrKyaYiHNwIi7sCVnGmoXKtlIFPVMKpDnQ1mqlbbUiqHaxJ3R12sq6oG3dsuGCjbtcneWBi40pUESsXfCYDGNUUNFe7mrLHG53xBwsqtEmyZigQsw94UYOKFAP0Y2T587YnzOAFnOfAs0RiYhoR+aFW/6ZlgQxDWJA1FaCBjEt0FLUxoLKACi0mXZY0CPRpWl0bhsJqrsmJxSwh+qnzqkmtQU1ljS4uUn02iZ5xz8iwfNnQvSH9TKjMyHq3brJh1qC6nReu6QBRLwnBlzeGJPXQNRT0dT9OCOLJFrUymnCNaqDys3G1JS3d4jeny1/x0nxjesjddyIxXcRA0g3bhM9a93bKIKLAB5VfUNlC5UjBWoIrBk4AR//pO7/Nid6+tBPQQG8zHtHyybjqy31nWwR0UREvo+rvbQCRtrND0+Um/3lmOjkAQ0C/k64ML+8q9pXO1RuT6u53LauFi6K28xvC7zHrW2iN+8rS3YNXIAQC58N7f91narmz4pbWCy+mx2vM9LecWvVC1cKqgdlJ9SGm9o1vTi9/IXhtra+cFNIhj2LvOi281+Dx/Fd7AVKY5TwrCr0LhU0NUjdDr6isy4JJwBuC8/jObRDv39t03XVBxcgt4/fi77+X8ny+wDcfyVeehebgRIS+UeyBrjwBJVbqKrOi6kt1wtG02CZeA4nDYGFD0HSLwUG8q0YBbsnBF/fJdrcVxem+UApJlUBsl/0gkJBZSBkM0/79mTpZsvExNXPXYW+wGeDZa4Cor62oVz0xp6dyDeiXaHNrChAWit5o7Exulze2VG3P8wuiwnx7ogrfX3ar5Bp0AzAOuFKyzzJ80MlqL0sGDeDD/OezB3gltZpu6KdhXrx7OLjsNqPvlNuyxUxAT7LOxP12YoCI8ApQZl8uE2WmGiNLpFvobatExQFSgiSICoe//4w34K7BCLCfXLzgM+Ntv+pePyHSn19W0wpp6LykoV2Yp1F3JkuxURH/XS//0AJF9TTlHfjC/C92bLZ6IOIdvT82Qvkudwx9QUiRGCvg94MBDf8edCGvtButV9RIeZqC+3E3ebBCW/wwvrQVHP+PlNRuQuiqmmYF7ggqK4TjakP0gGQy4KCf5wRdZSt7b1ooWoafKAKroia0SzrcrcpUB03RN1OB0fn3RY5d9OHineMqbZN5CPA+fwtMgKLiu4Wkgkb+9QxaqUYUvVHy35oRPfJB1jMplEw3m96ZCcratcotzvH3XRiYUy+kGdhPCbJJ7QoTbezoEZw/7Moe5Un6q0HaoTGPvCusrMs21C9QldMvsLpwnThGTI8nHUyAaco3yxxZNk29d1Py9OE5hhpDc+DojH5DCwTlgOL/OymOpAkZ6s1AQ9a46IpC3xYVPYMaa9hlzF+KEEj+oB8BicZJxKpQuaZvm/qZCJbxGOhiGbvTItfmxYVF5pJT1GEWv/wvA2NyWe6qnBAThfC4CKBO93cq5YEgaiw1K9WlgS1YYwfa+cLJPoMTioPKsPt4gRu7C2fMwUPGmBoDzXGELdqwTheh8NeuWcMLWGhfosJYDk8hrquXSHXKT19SMaBa8cBS4WoRZHv62Mh4gdLd4siM5v1u0JUCBqT73BdLNwat6c4cbZHbWD9ZR4AQ28cgacHH+yxOQxBgSwReaIExH10M1yoHsTnwedCZHz9VbLMACyU28v1gqjz+UFxcXdXdDW2G9HtNb1Ou59wlwBtGZeswAXiPh7jQjO4YUSYLtX72kFa6Ih8BdMSIBxEzArG/UbU/0hxp8u+6XCJkVjwU1AEGEjvwZ3x3JMsXMCN51De4lIVoSUgaEw+gi4BQIqvrI2CmKjOg5i3Osmr9smo3oRfF+BZYMjUAGRr1nfL38OWye8ZLh4KylkhFqnONAl+na8TjSvgn6B286HeY30B5EC3QNDBd86uEkHQYZEElzssziBoQoGhIARVe2cGhkESLHRICOMMgg6LBIkFg0U3HYAhMddW8eShu/4zUFLQhHwBqbt3D8hNIrUKSr+crmERo8VMihqT63DRF5a6cQ27y6xWQW4Gr3K52Dw88mQYDYVXgcvo3gonFvxqRwN5zPHjWvqXgNfM8UMKKnwvLDTkdP0l0RqmxkMX9MSLNRa6mPhTFwRrKBW1WxVfxpzvpAe4Z+JwX1AbM7BNYH+aQzEwRk1aUHa7bpfGoWIBiYU+KvjKEgf9LcVzll4U+VxQ2R898sDt4qQOuCaoAcfpX7LjoTMK+MXi4m4RF4rEsDWTyBr143Z5Y5t/Q7BdgyS7ndblqr8FHfa23l+VqQpoO18ydL3h4vF5vsvi8i6GeWWcyH6jctmclf4+V7cczBSdRK6xLWsjMdfSZJT7zaOulp6xwTz7wKWaIrnjwKLaLj6V4Z0V0lPls+A5rBL24cnqv2WSl90O6kvIXXe+qNCardQcWPsAFe+Y3gcLzXY72DpXdUdCobVikb9pbG7Vn1TetJXCQnkvE9fWk/ePwl0hyso498l0fhcLTWQ3sfNxD9G+WRRv6VwoqLbSQzINxjOxTt9z/afl2gPBWisjxCzb1G5VoTXa0oRsgC4Kt6Ub/fSSPCQhKt+bu1RQHfHaWXECYnKbikAJ3ZFAOco6S5vBlVMhdOJ3TjbACiUsatrt2tvAxmcQCM1Wvaja3JaFXIvVTkoFgRLa1PSmNjcMrTbtCm/otTGzu0hVJykLhNJUElQHSPYW+0HUi52KeLXLIbWpiOJ5PcBfj6kRKwKhNJVnn0lztxH1pmH3ixPAa+D6DBb2wLI6IL0PaR3EOa/iapmIaqA3iEX0EpMtECDd04tb8En408P5VHCzbJnN90dN9N7blZu7WoICvcE6RLVnPhAVUx5c3sa5Krggs8mUakDMraqulqktKJC7+UR0QjbhtWhv3ffP9aJLBq+CNrNpnZESc041aSSo/H9HNMWe0BQwjwhAhZiNxvQaT8mX/7BiKB2ogYpoGw/QNrbQ8/9/JJL4fVU4DA0l5j61oLWg8nMEUdtjQExgRFAQRG2BITGBMUFBCJQa0CIAysOooEB3abCdUUyBMjCS9aBJ16QM44ICnXxAPzWmQB6NkgZVsLKSmE7m37We+/URnBOVzkvIAlYsNI2w1okOlmK62pzp9nJGFrEuKJAumGQU7P50RTvMMaZsyyrTdCIocwWtNdFW2XAgtD6dCgr05nnTgfdZz3T8cFBn6MsEnQvKDNgNz+pUGJimN0GZgQjL84EO+hKS6V1QRgs79qyN7c21FuGMoGlktolkAIUdzF0b3YZwx7BI01keEzgpaBoh7ra42db7hMfUD+cikl5TjxzFeUHTCHExs2mcEtfWTKeEVN8RhbRzXtTJB7wSNEtq//BYHmrrTNwf6SPOedsZLYvGE1J9xZ/1fQiXuGyBq/gfIsnvJJIVgPMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"__VITE_ASSET__f87686d7__\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAACXBIWXMAACE4AAAhOAFFljFgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJKSURBVHgB7ZnLbcJAEEDHyHANJdABviMOdJKSQgfQAR3AAcQxKWE7CGe+mSXZyEpg/N3d2fU8yVpjSxg95tlCAAiCIAiCIAhCFbbb7ftut3uFjpM8O4GCbj+7CrfV6XSaz2YzBR2jjKA8i9vttpxOpxvoCFUFGT6SJJlPJpMFRE5dQQYFkefXVFCeKPNrU5AhqvxsCDIoiCA/m4LyBJufK0GG4PJzLcigIJD8fAnKwzo/DoIMLPPjJMiggFF+HAXl8Z4fd0EGb/mFIsigwHF+oQnK4yS/kAUZrOYXgyCDAgv5xSQoT2v5PRW0Xq+HaZpmeKEhjnCGh/Q61ituGYRB4/wSqAn+45Fdr9e7PC2x1+uN9YpbhseGwAsFNfOrLYiC+fRVys+KoCKYTF+p/LwIovAwfQqI/NgJKsLy9P3LrweBgUIOWghKOqCQFzx0gO/paswjwSwTGwwGo8vlkqGM37z0hOA6gpbB99WC5+fz+Q0TO/w970XQfr8fYfP3+4tORH9zWgBuI4c36Q1ea3k8HlePxBisPeZdTkEV8LOsMM+59cc8kykoRVFGFORPDa5TUIFSGVGkz070+/1PlKGfGvfXej8UqmZEkUIkNMmIIgZB94zwfrhqU4whWEFtZkQRlCBbGVGEIshqRhSsBbnKiIKdIB8ZUXAS5C0jCu+COGRE4UUQt4woXAtimRGFE0HcM6KwJiikjChsCAouI4rWBIWcEUUjQbFkRFFXUFQZUVQSFGtGFIWCupARBSWoMxkJgiAIgiAIQmW+ADpAFFw3ojOPAAAAAElFTkSuQmCC\"","import api from \"@/servicios/apiCliente\";\r\nimport { defineStore, storeToRefs } from \"pinia\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { useStore } from \"@/store\";\r\nimport { Axios } from \"axios\";\r\n\r\ndeclare interface tipo_ingreso {\r\n estudioSocioeconomicoId: String;\r\n tipoFuenteIngreso: String;\r\n actividadEconomica: null;\r\n nombreEmpresa: String;\r\n giroEmpresa: Number;\r\n telefono: String;\r\n extension: String;\r\n email: String;\r\n puesto: String;\r\n antiguedad: Number;\r\n nombreJefe: String;\r\n telefonoJefe: String;\r\n ingresoBruto: Number; //monto de la renta\r\n impuestos: Number;\r\n calle: String;\r\n noExterior: String;\r\n noInterior: String;\r\n codigoPostal: String;\r\n coloniaId: Number;\r\n municipioAlcaldia: String;\r\n esSocio: Boolean;\r\n descripcion: String; //explieque brevemente\r\n descripcion2: String; //descripcion2 en consesiones\r\n tipoPension: Number;\r\n}\r\ndeclare interface tipo_ingreso_apoyo {\r\n estudioSocioeconomicoId: String;\r\n numero: Number;\r\n esCotitular: Boolean;\r\n tipoFuenteIngreso: String;\r\n actividadEconomica: null;\r\n nombreEmpresa: String;\r\n giroEmpresa: Number;\r\n telefono: String;\r\n extension: String;\r\n email: String;\r\n puesto: String;\r\n antiguedad: Number;\r\n nombreJefe: String;\r\n telefonoJefe: String;\r\n ingresoBruto: Number; //monto de la renta\r\n impuestos: Number;\r\n calle: String;\r\n noExterior: String;\r\n noInterior: String;\r\n codigoPostal: String;\r\n coloniaId: Number;\r\n municipioAlcaldia: String;\r\n esSocio: Boolean;\r\n descripcion: String; //explieque brevemente\r\n descripcion2: String; //descripcion2 en consesiones\r\n tipoPension: Number;\r\n}\r\ndeclare interface figura_apoyo {\r\n estudioSocioeconomicoId: String;\r\n numero: Number | any; // preguntar\r\n figura: String; // Figura\r\n version: Number;\r\n estudioBloqueado: true;\r\n nombre: String;\r\n apellidoPaterno: String;\r\n apellidoMaterno: String;\r\n fechaNacimiento: String;\r\n rfc: String;\r\n curp: String;\r\n calle: String;\r\n noExterior: String;\r\n noInterior: String;\r\n codigoPostal: String;\r\n coloniaId: Number;\r\n municipioAlcaldia: String;\r\n telefonoParticular: String;\r\n telefonoCelular: String;\r\n emailPersonal: String;\r\n telefonoTrabajo: String;\r\n emailTrabajo: String;\r\n calleTrabajo: String;\r\n noExteriorTrabajo: String;\r\n noInteriorTrabajo: String;\r\n codigoPostalTrabajo: String;\r\n coloniaIdTrabajo: Number;\r\n municipioAlcaldiaTrabajo: String;\r\n numeroDependientes: Number;\r\n estadoCivil: String;\r\n regimenMatrimonial: String;\r\n nombreConyuge: String;\r\n apellidoPaternoConyuge: String;\r\n apellidoMaternoConyuge: String;\r\n clienteRadicaExtranjero: Boolean;\r\n clienteDobleNacionalidad: Boolean;\r\n ingresosExtranjeros: Boolean;\r\n profesion: Number;\r\n numeroEmpresasTrabaja: Number;\r\n comprobarIngresos: Boolean | any;\r\n pagoMensualPrestamo: Number;\r\n pagoTarjetaCredito: Number;\r\n pagoRenta: Number;\r\n pagoColegiaturas: Number;\r\n pagoGastoFamiliar: Number;\r\n otrosEgresos: Number;\r\n tipoViviendaActual: String;\r\n nombreArrendador: String;\r\n nombreArrendador2: String;\r\n inmuebleDescripcion: String;\r\n inmuebleValorAproxPatrimonio: Number;\r\n inmuebleGravadoPatrimonio: Boolean | null;\r\n automovilDescripcion: String;\r\n automovilValorAproxPatrimonio: Number;\r\n pagandoAutomovilPatrimonio: Boolean;\r\n observacionesGenerales: String;\r\n}\r\ndeclare interface tipos_ingresos_apoyo_objeto {\r\n figura: any;\r\n tipos_ingresos_empleado_por_nomina: [];\r\n tipos_ingresos_negocio_propio: [];\r\n tipos_ingresos_actividad_empresarial: [];\r\n tipos_ingresos_arrendamiento: [];\r\n tipos_ingresos_concesiones: [];\r\n tipos_ingresos_pension: [];\r\n tipos_ingresos_conyuge: [];\r\n tipos_ingresos_otros: [];\r\n}\r\nexport const useStoreTitular = defineStore(\"titular\", {\r\n state: () => ({\r\n /* Mi figura actual */\r\n figuraActual: 0,\r\n indexPosicionFiguraTipoTrabajo: 0,\r\n operacionTitulacionId: \"\",\r\n estudioSocioeconomicoId: \"\",\r\n cargandoDatosFiguraDeApoyo: true,\r\n tieneSesion: false,\r\n /**Condierar estudio estudioSocioeconomicoId */\r\n\r\n /** Obtener cliente desde api en consulta */\r\n datos_figura: [\r\n {\r\n estudioSocioeconomicoId: \"\",\r\n clienteId: 0,\r\n version: 0,\r\n estudioBloqueado: true,\r\n montoAdjudicado: 0,\r\n mensualida: 0,\r\n proyecto: null,\r\n tieneContratoPreventa: null,\r\n valorPactado: 0,\r\n inmuebleGravado: true,\r\n usoInmueble: \"\",\r\n nombreDesarrollo: \"\",\r\n nombreContactoDesarrollo: \"\",\r\n telefonoDesarrollo: \"\",\r\n correoDesarrollo: \"\",\r\n valorProyecto: 0,\r\n tipoConstruccion: \"\",\r\n tienePermisoConstrunccion: true,\r\n vendedorEsPersonaFisica: true,\r\n nombreVendedor: \"\",\r\n apellidoPaternoVendedor: \"\",\r\n apellidoMaternoVendedor: \"\",\r\n telefonoVendedor: \"\",\r\n correoVendedor: \"\",\r\n estadoCivilVendedor: \"SOLTERO\",\r\n regimenMatrimonialVendedor: \"SOCIEDAD_CONYUGAL\",\r\n nombreConyugeVendedor: \"\",\r\n apellidoPaternoConyugeVendedor: \"\",\r\n apellidoMaternoConyugeVendedor: \"\",\r\n nombre: \"\",\r\n apellidoPaterno: \"\",\r\n apellidoMaterno: \"\",\r\n fechaNacimiento: \"\",\r\n rfc: \"\",\r\n curp: \"\",\r\n calle: \"\",\r\n noExterior: \"\",\r\n noInterior: \"\",\r\n codigoPostal: \"\",\r\n coloniaId: 0,\r\n municipioAlcaldia: \"\",\r\n telefonoParticular: \"\",\r\n telefonoCelular: \"\",\r\n emailPersonal: \"\",\r\n telefonoTrabajo: \"\",\r\n emailTrabajo: \"\",\r\n calleTrabajo: \"\",\r\n noExteriorTrabajo: \"\",\r\n noInteriorTrabajo: \"\",\r\n codigoPostalTrabajo: \"\",\r\n coloniaIdTrabajo: 0,\r\n municipioAlcaldiaTrabajo: \"\",\r\n numeroDependientes: 0,\r\n estadoCivil: \"\",\r\n regimenMatrimonial: \"\",\r\n nombreConyuge: \"\",\r\n apellidoPaternoConyuge: \"\",\r\n apellidoMaternoConyuge: \"\",\r\n clienteRadicaExtranjero: true,\r\n clienteDobleNacionalidad: true,\r\n ingresosExtranjeros: true,\r\n profesion: 0,\r\n numeroEmpresasTrabaja: 0,\r\n comprobarIngresos: null,\r\n pagoMensualPrestamo: 0,\r\n pagoTarjetaCredito: 0,\r\n pagoRenta: 0,\r\n pagoColegiaturas: 0,\r\n pagoGastoFamiliar: 0,\r\n otrosEgresos: 0,\r\n mensualidadHirCasa: 0,\r\n tipoViviendaActual: \"PROPIA\",\r\n nombreArrendador: null,\r\n nombreArrendador2: \"\",\r\n telefonoArrendador: null,\r\n institucionFinanciera: null,\r\n inmuebleDescripcion: \"\",\r\n inmuebleValorAproxPatrimonio: 0,\r\n inmuebleGravadoPatrimonio: null,\r\n automovilDescripcion: \"\",\r\n automovilValorAproxPatrimonio: 0,\r\n pagandoAutomovilPatrimonio: null,\r\n observacionesGenerales: \"\"\r\n }\r\n ] as any,\r\n\r\n tipos_ingreso_global_figuras_apoyo: [] as any,\r\n seccion_ingreso_actual: \"\",\r\n // tipos_ingresos_empleado_por_nomina: [] as any,\r\n // tipos_ingresos_negocio_propio: [] as any,\r\n // tipos_ingresos_actividad_empresarial: [] as any,\r\n // tipos_ingresos_arrendamiento: [] as any,\r\n // tipos_ingresos_concesiones: [] as any,\r\n // tipos_ingresos_pension: [] as any,\r\n // tipos_ingresos_conyuge: [] as any,\r\n // tipos_ingresos_otros: [] as any,\r\n\r\n tipos_ingreso: [] as any,\r\n formulario_datos_generales: { completado: false },\r\n formulario_datos_generales_personales: false,\r\n formulario_datos_generales_domicilio_particular: false,\r\n formulario_datos_generales_domicilio_trabajo: false,\r\n formulario_ingresos: { completado: false },\r\n formulario_gastos: { completado: false },\r\n formulario_patrimonio: { completado: false },\r\n formulario_uso_financiamiento: { completado: false },\r\n formulario_vendedor: { completado: false },\r\n formulario_observaciones: { completado: false },\r\n figura_titular: { completado: false }\r\n }),\r\n getters: {\r\n getDatosFigura: state => state.datos_figura,\r\n getTiposIngreso: state => state.tipos_ingreso.length,\r\n getTipoActualSeleccionado: state => state.seccion_ingreso_actual,\r\n getFigura: state => state.figuraActual,\r\n getDatosFiguras: state => state.datos_figura,\r\n getPosicionFiguraActualTiposTrabajo: state =>\r\n state.tipos_ingreso_global_figuras_apoyo.findIndex((e: any) => {\r\n return e.figura == state.figuraActual;\r\n }),\r\n getLenghtMegaArregloGlobal: state => state.tipos_ingreso_global_figuras_apoyo.length,\r\n getLongitudIngresoEmpleadoPorNomina: state =>\r\n state.tipos_ingreso_global_figuras_apoyo.find(e => {\r\n return e.figura == state.figuraActual;\r\n }),\r\n getArregloGlobal(state) {\r\n return state.tipos_ingreso_global_figuras_apoyo.find((obj: any) => obj.figura == state.figuraActual);\r\n }\r\n },\r\n actions: {\r\n asignarValoresGastos() {\r\n if (this.datos_figura[this.getFigura].pagoMensualPrestamo == null)\r\n this.datos_figura[this.getFigura].pagoMensualPrestamo = 0;\r\n if (this.datos_figura[this.getFigura].pagoTarjetaCredito == null)\r\n this.datos_figura[this.getFigura].pagoTarjetaCredito = 0;\r\n if (this.datos_figura[this.getFigura].pagoRenta == null) this.datos_figura[this.getFigura].pagoRenta = 0;\r\n if (this.datos_figura[this.getFigura].pagoColegiaturas == null)\r\n this.datos_figura[this.getFigura].pagoColegiaturas = 0;\r\n if (this.datos_figura[this.getFigura].pagoGastoFamiliar == null)\r\n this.datos_figura[this.getFigura].pagoGastoFamiliar = 0;\r\n if (this.datos_figura[this.getFigura].otrosEgresos == null) this.datos_figura[this.getFigura].otrosEgresos = 0;\r\n if (this.datos_figura[this.getFigura].mensualidadHirCasa == undefined)\r\n this.datos_figura[this.getFigura].mensualidadHirCasa = 0;\r\n },\r\n convertirArreglo() {\r\n const objetoPre = [\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo]\r\n .tipos_ingresos_empleado_por_nomina,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo]\r\n .tipos_ingresos_negocio_propio,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo]\r\n .tipos_ingresos_actividad_empresarial,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo]\r\n .tipos_ingresos_arrendamiento,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_concesiones,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_pension,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_conyuge,\r\n ...this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_otros\r\n ];\r\n this.$state.tipos_ingreso = objetoPre;\r\n },\r\n async guardarTiposDeingreso() {\r\n if (this.figuraActual == 0) {\r\n try {\r\n this.convertirArreglo();\r\n await api.Cliente.Cliente.EstudioSocioEconomicoApi.GuardarIngresos(this.$state.tipos_ingreso);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n } else {\r\n try {\r\n this.convertirArreglo();\r\n await api.Cliente.Cliente.EstudioSocioEconomicoApi.GuardarIngresosFiguraApoyo(this.$state.tipos_ingreso);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n async guardarFigura(datos: any) {\r\n if (this.figuraActual == 0) {\r\n try {\r\n await api.Cliente.Cliente.EstudioSocioEconomicoApi.Guardar(datos);\r\n this.guardarTiposDeingreso();\r\n useStore().agregarToast({\r\n tipo: TipoBootstrap.SUCCESS,\r\n body: \"Datos guardados correctamente.\"\r\n });\r\n } catch (error) {\r\n useStore().agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n\r\n body: `Error: ${error}`\r\n });\r\n }\r\n } else {\r\n try {\r\n await api.Cliente.Cliente.EstudioSocioEconomicoApi.GuardarFiguraApoyo(datos);\r\n this.guardarTiposDeingreso();\r\n useStore().agregarToast({\r\n tipo: TipoBootstrap.SUCCESS,\r\n body: `Datos guardados correctamente.`\r\n });\r\n } catch (error) {\r\n useStore().agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: `Error: ${error}`\r\n });\r\n }\r\n }\r\n },\r\n async ObtenerOperacionesAtivasSesion() {\r\n try {\r\n const { data } = await api.Cliente.Cliente.OperacionTitulacionApi.ObtenerOperacionesActivas(); //Obtiene operaciones activas\r\n this.$state.operacionTitulacionId = data[0].operacionTitulacionId || \"\";\r\n setTimeout(() => {\r\n this.segundoToken(this.$state.operacionTitulacionId);\r\n }, 500);\r\n this.$state.tieneSesion = true;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n\r\n async ObtenerOperacionesAtivas(operacionId: any) {\r\n try {\r\n this.$state.operacionTitulacionId = operacionId;\r\n setTimeout(() => {\r\n this.segundoToken(this.$state.operacionTitulacionId);\r\n }, 500);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async segundoToken(token: any) {\r\n const { data } = await api.Cliente.Cliente.EstudioSocioEconomicoApi.Obtener(token);\r\n this.$state.estudioSocioeconomicoId = data.estudioSocioeconomicoId || \"\";\r\n this.ObtenerDatosDeFigura();\r\n },\r\n cambiarTipoActual(tipo: string) {\r\n this.$state.seccion_ingreso_actual = tipo;\r\n },\r\n async ObtenerDatosDeFigura() {\r\n try {\r\n const { data } = await api.Cliente.Cliente.EstudioSocioEconomicoApi.Obtener(this.$state.operacionTitulacionId);\r\n this.$state.datos_figura[0] = { ...data };\r\n if (this.datos_figura[0].fechaNacimiento) {\r\n const fechaFormateada = this.datos_figura[0].fechaNacimiento;\r\n this.datos_figura[0].fechaNacimiento = fechaFormateada.split(\"T\")[0];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n try {\r\n const { data } = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerFigurasApoyo(\r\n this.$state.estudioSocioeconomicoId\r\n );\r\n let cotitularTemporal, obligadoTemporal, garanteTemporal;\r\n for (let index = 0; index < data.length; index++) {\r\n if (data[index].figura == \"CoTitular\") {\r\n cotitularTemporal = data[index];\r\n this.$state.datos_figura[index + 1] = { ...cotitularTemporal };\r\n if (this.datos_figura[index + 1].fechaNacimiento) {\r\n const fechaFormateada = this.datos_figura[index + 1].fechaNacimiento;\r\n this.datos_figura[index + 1].fechaNacimiento = fechaFormateada.split(\"T\")[0];\r\n }\r\n } else if (data[index].figura == \"ObligadoSolidario\") {\r\n obligadoTemporal = data[index];\r\n this.$state.datos_figura[index + 1] = { ...obligadoTemporal };\r\n if (this.datos_figura[index + 1].fechaNacimiento) {\r\n const fechaFormateada = this.datos_figura[index + 1].fechaNacimiento;\r\n this.datos_figura[index + 1].fechaNacimiento = fechaFormateada.split(\"T\")[0];\r\n }\r\n } else {\r\n garanteTemporal = data[index];\r\n this.$state.datos_figura[index + 1] = { ...garanteTemporal };\r\n if (this.datos_figura[index + 1].fechaNacimiento) {\r\n const fechaFormateada = this.datos_figura[index + 1].fechaNacimiento;\r\n this.datos_figura[index + 1].fechaNacimiento = fechaFormateada.split(\"T\")[0];\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n this.ObtenerDatosTiposIngreso();\r\n this.$state.cargandoDatosFiguraDeApoyo = false;\r\n },\r\n async ObtenerDatosTiposIngreso() {\r\n const tipos_ingresos_apoyo_objeto: tipos_ingresos_apoyo_objeto = {\r\n figura: this.$state.figuraActual,\r\n tipos_ingresos_empleado_por_nomina: [],\r\n tipos_ingresos_negocio_propio: [],\r\n tipos_ingresos_actividad_empresarial: [],\r\n tipos_ingresos_arrendamiento: [],\r\n tipos_ingresos_concesiones: [],\r\n tipos_ingresos_pension: [],\r\n tipos_ingresos_conyuge: [],\r\n tipos_ingresos_otros: []\r\n };\r\n const existeObjetoDeFigura = this.$state.tipos_ingreso_global_figuras_apoyo.some(\r\n e => e.figura == this.$state.figuraActual\r\n );\r\n if (!existeObjetoDeFigura) {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n }\r\n\r\n if (this.$state.figuraActual == 0) {\r\n try {\r\n const { data } = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerIngresos(\r\n this.$state.estudioSocioeconomicoId\r\n );\r\n\r\n for (let index = 0; index < data.length; index++) {\r\n const element = data[index];\r\n //Determinar donde se coloca cada arreglo asignar al arraelo de tipo que le correpsodne\r\n if (data[index].tipoFuenteIngreso == \"EMPLEADO_POR_NOMINA\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_empleado_por_nomina.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"NEGOCIO_PROPIO\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_negocio_propio.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"ACTIVIDAD_EMPRESARIAL\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_actividad_empresarial.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"ARRENDAMIENTO\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_arrendamiento.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"CONCESIONES\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_concesiones.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"PENSION\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_pension.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"CONYUGE\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_conyuge.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"OTROS\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_otros.push(data[index]);\r\n } else {\r\n console.log(\"no entra en ningun tipo para agregar\");\r\n }\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n }\r\n } else {\r\n try {\r\n const { data } = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerIngresosFiguraApoyo(\r\n this.$state.estudioSocioeconomicoId,\r\n this.$state.figuraActual\r\n );\r\n if (data.length > 0) {\r\n for (let index = 0; index < data.length; index++) {\r\n if (data[index].tipoFuenteIngreso == \"EMPLEADO_POR_NOMINA\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_empleado_por_nomina.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"NEGOCIO_PROPIO\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_negocio_propio.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"ACTIVIDAD_EMPRESARIAL\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_actividad_empresarial.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"ARRENDAMIENTO\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_arrendamiento.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"CONCESIONES\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_concesiones.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"PENSION\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_pension.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"CONYUGE\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_conyuge.push(data[index]);\r\n } else if (data[index].tipoFuenteIngreso == \"OTROS\") {\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_otros.push(data[index]);\r\n } else {\r\n console.log(\"no entra en ningun tipo para agregar\");\r\n }\r\n }\r\n } else {\r\n console.log(\"No hay datos para esta figura \", data);\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n }\r\n }\r\n },\r\n /** Region Tipos de trabajo */\r\n AgregarOtroTipoIngreso(tipo: any, figuraActual: Number) {\r\n this.$state.seccion_ingreso_actual = tipo;\r\n /**\r\n * Buscar si ya existe un arreglo para la figura en cuestión\r\n * Si existe buscarlo obtener su posición en el mega arreglo\r\n * Si no existe agregarlo\r\n */\r\n const existeObjetoDeFigura = this.$state.tipos_ingreso_global_figuras_apoyo.some(e => e.figura == figuraActual);\r\n const posicionObjetoDeFigura = this.$state.tipos_ingreso_global_figuras_apoyo.findIndex(e => {\r\n return e.figura == figuraActual;\r\n });\r\n const tipo_ingreso: tipo_ingreso = {\r\n estudioSocioeconomicoId: this.$state.estudioSocioeconomicoId,\r\n tipoFuenteIngreso: tipo,\r\n actividadEconomica: null,\r\n nombreEmpresa: \"\",\r\n giroEmpresa: 0,\r\n telefono: \"\",\r\n extension: \"\",\r\n email: \"\",\r\n puesto: \"\",\r\n antiguedad: 0,\r\n nombreJefe: \"\",\r\n telefonoJefe: \"\",\r\n ingresoBruto: 0,\r\n impuestos: 0,\r\n calle: \"\",\r\n noExterior: \"\",\r\n noInterior: \"\",\r\n codigoPostal: \"\",\r\n coloniaId: 0,\r\n municipioAlcaldia: \"\",\r\n esSocio: true,\r\n descripcion: \"\",\r\n descripcion2: \"\",\r\n tipoPension: 0\r\n };\r\n const tipo_ingreso_apoyo: tipo_ingreso_apoyo = {\r\n estudioSocioeconomicoId: this.$state.estudioSocioeconomicoId,\r\n numero: this.figuraActual,\r\n esCotitular: true,\r\n tipoFuenteIngreso: tipo,\r\n actividadEconomica: null,\r\n nombreEmpresa: \"\",\r\n giroEmpresa: 0,\r\n telefono: \"\",\r\n extension: \"\",\r\n email: \"\",\r\n puesto: \"\",\r\n antiguedad: 0,\r\n nombreJefe: \"\",\r\n telefonoJefe: \"\",\r\n ingresoBruto: 0,\r\n impuestos: 0,\r\n calle: \"\",\r\n noExterior: \"\",\r\n noInterior: \"\",\r\n codigoPostal: \"\",\r\n coloniaId: 0,\r\n municipioAlcaldia: \"\",\r\n esSocio: true,\r\n descripcion: \"\",\r\n descripcion2: \"\",\r\n tipoPension: 0\r\n };\r\n const tipos_ingresos_apoyo_objeto: tipos_ingresos_apoyo_objeto = {\r\n figura: figuraActual,\r\n tipos_ingresos_empleado_por_nomina: [],\r\n tipos_ingresos_negocio_propio: [],\r\n tipos_ingresos_actividad_empresarial: [],\r\n tipos_ingresos_arrendamiento: [],\r\n tipos_ingresos_concesiones: [],\r\n tipos_ingresos_pension: [],\r\n tipos_ingresos_conyuge: [],\r\n tipos_ingresos_otros: []\r\n };\r\n //Buscar si existe un objeto perteneciente a la figura\r\n if (existeObjetoDeFigura) {\r\n if (this.figuraActual == 0) {\r\n if (tipo == \"EMPLEADO_POR_NOMINA\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[\r\n posicionObjetoDeFigura\r\n ].tipos_ingresos_empleado_por_nomina.push(tipo_ingreso);\r\n } else if (tipo == \"NEGOCIO_PROPIO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_negocio_propio.push(\r\n tipo_ingreso\r\n );\r\n } else if (tipo == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[\r\n posicionObjetoDeFigura\r\n ].tipos_ingresos_actividad_empresarial.push(tipo_ingreso);\r\n } else if (tipo == \"ARRENDAMIENTO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_arrendamiento.push(\r\n tipo_ingreso\r\n );\r\n } else if (tipo == \"CONCESIONES\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_concesiones.push(\r\n tipo_ingreso\r\n );\r\n } else if (tipo == \"PENSION\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_pension.push(\r\n tipo_ingreso\r\n );\r\n } else if (tipo == \"CONYUGE\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_conyuge.push(\r\n tipo_ingreso\r\n );\r\n } else if (tipo == \"OTROS\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_otros.push(\r\n tipo_ingreso\r\n );\r\n } else {\r\n console.log(\"error no se encontro \");\r\n }\r\n } else {\r\n // Insertar objeto del tipo de ingreso en su arreglo correspondiente\r\n if (tipo == \"EMPLEADO_POR_NOMINA\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[\r\n posicionObjetoDeFigura\r\n ].tipos_ingresos_empleado_por_nomina.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"NEGOCIO_PROPIO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_negocio_propio.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else if (tipo == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[\r\n posicionObjetoDeFigura\r\n ].tipos_ingresos_actividad_empresarial.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"ARRENDAMIENTO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_arrendamiento.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else if (tipo == \"CONCESIONES\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_concesiones.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else if (tipo == \"PENSION\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_pension.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else if (tipo == \"CONYUGE\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_conyuge.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else if (tipo == \"OTROS\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo[posicionObjetoDeFigura].tipos_ingresos_otros.push(\r\n tipo_ingreso_apoyo\r\n );\r\n } else {\r\n console.log(\"error no se encontro \");\r\n }\r\n }\r\n } else {\r\n //Determinar para donde se va agregar con el tipo y agregarlo al arreglo correspondiente\r\n if (this.figuraActual == 0) {\r\n if (tipo == \"EMPLEADO_POR_NOMINA\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_empleado_por_nomina.push(tipo_ingreso);\r\n } else if (tipo == \"NEGOCIO_PROPIO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_negocio_propio.push(tipo_ingreso);\r\n } else if (tipo == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_actividad_empresarial.push(tipo_ingreso);\r\n } else if (tipo == \"ARRENDAMIENTO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_arrendamiento.push(tipo_ingreso);\r\n } else if (tipo == \"CONCESIONES\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_concesiones.push(tipo_ingreso);\r\n } else if (tipo == \"PENSION\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_pension.push(tipo_ingreso);\r\n } else if (tipo == \"CONYUGE\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_conyuge.push(tipo_ingreso);\r\n } else if (tipo == \"OTROS\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_otros.push(tipo_ingreso);\r\n } else {\r\n console.log(\"No se encontro el tipo \");\r\n }\r\n } else {\r\n // Insertar objeto del tipo de ingreso en su arreglo correspondiente\r\n if (tipo == \"EMPLEADO_POR_NOMINA\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_empleado_por_nomina.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"NEGOCIO_PROPIO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_negocio_propio.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_actividad_empresarial.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"ARRENDAMIENTO\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_arrendamiento.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"CONCESIONES\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_concesiones.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"PENSION\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_pension.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"CONYUGE\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_conyuge.push(tipo_ingreso_apoyo);\r\n } else if (tipo == \"OTROS\") {\r\n this.$state.tipos_ingreso_global_figuras_apoyo.push(tipos_ingresos_apoyo_objeto);\r\n tipos_ingresos_apoyo_objeto.tipos_ingresos_otros.push(tipo_ingreso_apoyo);\r\n } else {\r\n console.log(\"No se encontro el tipo \");\r\n }\r\n }\r\n }\r\n },\r\n RemoverTipoIngreso(tipo: any) {\r\n if (tipo == \"EMPLEADO_POR_NOMINA\") {\r\n this.getArregloGlobal.tipos_ingresos_empleado_por_nomina = [];\r\n } else if (tipo == \"NEGOCIO_PROPIO\") {\r\n this.getArregloGlobal.tipos_ingresos_negocio_propio = [];\r\n } else if (tipo == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.getArregloGlobal.tipos_ingresos_actividad_empresarial = [];\r\n } else if (tipo == \"ARRENDAMIENTO\") {\r\n this.getArregloGlobal.tipos_ingresos_arrendamiento = [];\r\n } else if (tipo == \"CONCESIONES\") {\r\n this.getArregloGlobal.tipos_ingresos_concesiones = [];\r\n } else if (tipo == \"PENSION\") {\r\n this.getArregloGlobal.tipos_ingresos_pension = [];\r\n } else if (tipo == \"CONYUGE\") {\r\n this.getArregloGlobal.tipos_ingresos_conyuge = [];\r\n } else if (tipo == \"OTROS\") {\r\n this.getArregloGlobal.tipos_ingresos_otros = [];\r\n }\r\n },\r\n EliminarTipoIngreso(index: any) {\r\n /**\r\n * Detectar que persona es y que posición tiene\r\n * Detectar que tipo de ingreso es y hacia que arreglo va\r\n * Remover el index que traemos\r\n */\r\n if (this.getTipoActualSeleccionado == \"EMPLEADO_POR_NOMINA\") {\r\n this.tipos_ingreso_global_figuras_apoyo[\r\n this.getPosicionFiguraActualTiposTrabajo\r\n ].tipos_ingresos_empleado_por_nomina.splice(index, 1);\r\n } else if (this.getTipoActualSeleccionado == \"NEGOCIO_PROPIO\") {\r\n this.tipos_ingreso_global_figuras_apoyo[\r\n this.getPosicionFiguraActualTiposTrabajo\r\n ].tipos_ingresos_negocio_propio.splice(index, 1);\r\n } else if (this.getTipoActualSeleccionado == \"ACTIVIDAD_EMPRESARIAL\") {\r\n this.tipos_ingreso_global_figuras_apoyo[\r\n this.getPosicionFiguraActualTiposTrabajo\r\n ].tipos_ingresos_actividad_empresarial.splice(index, 1);\r\n } else if (this.getTipoActualSeleccionado == \"ARRENDAMIENTO\") {\r\n this.tipos_ingreso_global_figuras_apoyo[\r\n this.getPosicionFiguraActualTiposTrabajo\r\n ].tipos_ingresos_arrendamiento.splice(index, 1);\r\n } else if (this.getTipoActualSeleccionado == \"CONCESIONES\") {\r\n this.tipos_ingreso_global_figuras_apoyo[\r\n this.getPosicionFiguraActualTiposTrabajo\r\n ].tipos_ingresos_concesiones.splice(index, 1);\r\n } else if (this.getTipoActualSeleccionado == \"PENSION\") {\r\n this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_pension.splice(\r\n index,\r\n 1\r\n );\r\n } else if (this.getTipoActualSeleccionado == \"CONYUGE\") {\r\n this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_conyuge.splice(\r\n index,\r\n 1\r\n );\r\n } else if (this.getTipoActualSeleccionado == \"OTROS\") {\r\n this.tipos_ingreso_global_figuras_apoyo[this.getPosicionFiguraActualTiposTrabajo].tipos_ingresos_otros.splice(\r\n index,\r\n 1\r\n );\r\n }\r\n }\r\n }\r\n});\r\n","import { defineStore } from \"pinia\";\r\nimport { useStoreTitular } from \"@/Aplicaciones/Cliente/Areas/Cliente/storeTitular\";\r\nimport api from \"@/servicios/apiCliente\";\r\n\r\nexport const useStoreDocumentos = defineStore(\"documentos\", {\r\n state: () => ({\r\n cargando: false,\r\n datos: null\r\n }),\r\n getters: {},\r\n actions: {\r\n async cargarDocumento(documento, documentoID, figuraActual, estudioSocioeconomicoId, categoria, entidad) {\r\n this.cargando = true;\r\n const storeTitular = useStoreTitular();\r\n try {\r\n await api.Cliente.Cliente.EstudioSocioEconomicoApi.GuardarDocumento(\r\n documento,\r\n documentoID,\r\n figuraActual,\r\n storeTitular.estudioSocioeconomicoId,\r\n categoria,\r\n entidad\r\n );\r\n\r\n this.cargando = false;\r\n } catch (error) {\r\n this.cargando = false;\r\n console.log(\"error: \" + error);\r\n }\r\n },\r\n async consumirDocumentos() {\r\n const storeTitular = useStoreTitular();\r\n const resp = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerDocumentos(\r\n storeTitular.estudioSocioeconomicoId\r\n );\r\n this.datos = resp.data;\r\n }\r\n }\r\n});\r\n","<template lang=\"pug\">\r\n.div.w-100.d-flex.justify-content-center.align-items-center.h-100(v-if=\"store.cargandoDatosFiguraDeApoyo\")\r\n .contenedor-central-formulario.p-4\r\n .spinner-border(role=\"status\")\r\ndiv(v-else)\r\n .container-fluid\r\n h3.titulacion Mi proceso de Titulación\r\n .card.mb-5.shadow-sm\r\n .row\r\n .col-12.d-flex.justify-content-center.stepper-container\r\n ul.stepper\r\n li(\r\n v-for=\"(etapa, index) in objEtapas\"\r\n :key=\"etapa\"\r\n :class=\"[{ active: etapa.id == etapaTitulacionActiva, llenarLinea: (index == indexPasoActual && index != indexPasoActual) || index < indexPasoActual, llenarPunto: etapa.index == indexPasoActual || etapa.index < indexPasoActual }]\"\r\n @click=\"obtenerURL\"\r\n )\r\n router-link(:to=\"{ name: etapa.componente, params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") {{ etapa.texto }}\r\n .asesor\r\n p.text-secondary(v-if=\"false\") Tu asesor es\r\n button.btn.btn-outline-primary(type=\"button\")\r\n i.fa-solid.fa-headset\r\n span {{ nombreAsesor.data }}\r\n button.btn.btn-outline-primary(v-if=\"!store.tieneSesion\" type=\"button\" @click=\"store.segundoToken(store.operacionTitulacionId)\")\r\n span Actualizar\r\n section\r\n .izquierdo(:class=\"isVisible ? 'anchoIzquierdo' : ''\")\r\n #sidebar.seccion-navegacion.flex-shrink-0\r\n ul.list-unstyled.lista_sidebar\r\n li\r\n .seccion-interna.d-flex.justify-content-between.align-items-center.mb-2\r\n button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed(\r\n :data-bs-toggle=\"route.name !== 'contenido-checklist' ? 'collapse' : ''\"\r\n data-bs-target=\"#home-collapse\"\r\n aria-expanded=\"false\"\r\n @click=\"route.name == 'contenido-checklist' ? mostrarDocumentosChecklistTitular() : ''\"\r\n )\r\n span Titular\r\n div(v-if=\"store.datos_figura[0].estudioBloqueado && route.name !== 'contenido-checklist'\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n #home-collapse.collapse.bg-secondary-hir(:class=\"route.name !== 'contenido-checklist' ? 'show' : ''\")\r\n ul.btn-toggle-nav.small.lista__sidebar.py-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'datos-generales', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Datos generales\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between(hidden)\r\n router-link(:to=\"{ name: 'ingresos', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Ingresos\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'gastos', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Gastos\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'patrimonio', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Patrimonio\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'uso-financiamiento', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Uso de financiamiento\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'vendedor', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Vendedor\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'observaciones', params: { figura: 'titular', numero: '0' }, query: { operacionId: operacion } }\") Observaciones generales\r\n div(v-if=\"false\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n li(\r\n v-for=\"(item, index) in store.getDatosFigura\"\r\n @click=\"route.name == 'contenido-checklist' ? mostrarDocumentosChecklistFiguras(item.figura, item.numero) : ''\"\r\n )\r\n .seccion-interna.d-flex.justify-content-between.align-items-center.mb-2(v-if=\"item.figura !== undefined\")\r\n button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed(\r\n :data-bs-toggle=\"route.name !== 'contenido-checklist' ? 'collapse' : ''\"\r\n :data-bs-target=\"'#' + item.figura + item.numero\"\r\n aria-expanded=\"false\"\r\n )\r\n span {{ item.figura == \"CoTitular\" ? 'Cotitular' : item.figura == \"GaranteHipotecario\" ? \"Garante Hipotecario\" : item.figura == \"ObligadoSolidario\" ? \"Obligado Solidario\" : \"\" }}\r\n div(v-if=\"store.datos_figura[index].estudioBloqueado\")\r\n i.fa-solid.fa-circle-check.text-success.me-2\r\n i.fa-solid.fa-circle-check.text-success.me-2(v-if=\"false\")\r\n .collapse.bg-secondary-hir(\r\n :id=\"item.figura + item.numero\"\r\n :class=\"route.params.figura == item.figura && route.params.numero == item.numero && route.name !== 'contenido-checklist' ? 'show' : ''\"\r\n )\r\n ul.btn-toggle-nav.small.lista__sidebar.py-2\r\n li.d-flex.justify-content-between\r\n router-link(\r\n :to=\"{ name: 'datos-generales', params: { figura: '' + item.figura, numero: '' + item.numero }, query: { operacionId: operacion } }\"\r\n ) Datos generales\r\n li.d-flex.justify-content-between\r\n router-link(\r\n :to=\"{ name: 'ingresos', params: { figura: '' + item.figura, numero: '' + item.numero }, query: { operacionId: operacion } }\"\r\n ) Ingresos\r\n li.d-flex.justify-content-between\r\n router-link(:to=\"{ name: 'gastos', params: { figura: '' + item.figura, numero: '' + item.numero }, query: { operacionId: operacion } }\") Gastos\r\n li.d-flex.justify-content-between\r\n router-link(\r\n :to=\"{ name: 'patrimonio', params: { figura: '' + item.figura, numero: '' + item.numero }, query: { operacionId: operacion } }\"\r\n ) Patrimonio\r\n li.d-flex.justify-content-between\r\n router-link(\r\n :to=\"{ name: 'observaciones', params: { figura: '' + item.figura, numero: '' + item.numero }, query: { operacionId: operacion } }\"\r\n ) Observaciones generales\r\n router-view\r\n //- **** CHAT **** \r\n .centro(v-if=\"false\")\r\n button.btn.btn-primary.bg-secondary(@click=\"esconder\")\r\n i.fa-solid.fa-message\r\n p Seguimiento\r\n i#flecha.fa-solid.fa-arrow-right\r\n .derecho(:class=\"isVisible ? 'block' : 'hide'\")\r\n #conversacion.conversacion\r\n .asesor-chat\r\n p.nombre {{ nombreAsesor.data }} - <span>Asesor</span>\r\n p.mensaje-chat Lorem ipsum dolor sit amet, consectetur adipisicing elit.\r\n p.horario 16/02/2021 16:30 hrs\r\n .usuario(v-for=\"mensaje in historialMensajes\" :key=\"mensaje\")\r\n p.nombre Tú\r\n p.mensaje-chat {{ formatearTexto(mensaje.mensaje) }}\r\n p.horario {{ formatearFecha(mensaje.fecha) }} hrs\r\n\r\n .mensaje\r\n p Escribe tu mensaje\r\n textarea(type=\"textarea\" placeholder=\"Mensaje\" v-model=\"mensajeDeUsuario\" @keyup.enter=\"guardarMensaje\")\r\n button.btn.btn-primary(type=\"button\" @click=\"guardarMensaje\")\r\n img(src=\"@/Aplicaciones/Cliente/Areas/Cliente/assets/logo_enviar.png\")\r\n</template>\r\n\r\n<!-- *** VUE *** -->\r\n<script lang=\"ts\" setup>\r\nimport api from \"@/servicios/apiCliente\";\r\nimport { ref, computed, reactive, watch, defineComponent, nextTick, onMounted } from \"vue\";\r\nimport { Core, Cliente } from \"@/servicios/api\";\r\nimport { useStoreDocumentos } from \"../../storeDocumentos\";\r\nimport { useStoreTitular } from \"../../storeTitular\";\r\nimport { useStore } from \"../../store\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\n\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nconst store = useStoreTitular();\r\nconst storeDocumentos = useStoreDocumentos();\r\nconst clienteStore = useStore();\r\nconst { formulario_datos_generales } = storeToRefs(store);\r\nconst { clienteId } = storeToRefs(clienteStore);\r\nconst route = useRoute();\r\nconst router = useRouter();\r\n// store.$state.datos_figura[store.$state.figuraActual].clienteId = clienteId;\r\n// store.ObtenerDatosDeFigura();\r\nconst asignarFiguraInicial = () => {\r\n store.figuraActual = route.params.numero;\r\n};\r\nconst operacion = ref(\"\");\r\nlet etapaTitulacion = \"\";\r\n\r\nif (route.query.operacionId) {\r\n //se ejecuta si no hay sesion\r\n store.tieneSesion = false;\r\n asignarFiguraInicial();\r\n store.operacionTitulacionId = route.query.operacionId;\r\n operacion.value = store.operacionTitulacionId;\r\n store.segundoToken(route.query.operacionId);\r\n const { data } = await api.Cliente.Cliente.OperacionTitulacionApi.ObtenerEtapaOperacionTitulacion(operacion.value);\r\n etapaTitulacion = [];\r\n etapaTitulacion.push(data);\r\n} else {\r\n //se ejecuta si existe sesion\r\n operacion.value = \"\";\r\n router.replace({ query: {} });\r\n asignarFiguraInicial();\r\n store.ObtenerOperacionesAtivasSesion();\r\n\r\n const { data } = await api.Cliente.Cliente.OperacionTitulacionApi.ObtenerOperacionesActivas();\r\n etapaTitulacion = data;\r\n}\r\nconst isVisible = ref(false);\r\nlet historialMensajes = ref([]);\r\nconst nombreAsesor = ref(\"\");\r\nlet horaDelMensaje = ref(\"\");\r\nlet mensajeDeUsuario = ref(\"\");\r\n// Objeto para validaciones\r\nconst dataCotitular = reactive({\r\n cpDomicilioParticular: \"\",\r\n cpDomicilioTrabajo: \"\",\r\n telefonoParticular: \"\",\r\n telefonoCelular: \"\",\r\n dependientesEconomicos: \"\",\r\n nombre: \"\",\r\n profesion: \"\",\r\n sueldoNominalBruto: \"\"\r\n});\r\nconst checkBoxesState = reactive({\r\n checkbox1: false,\r\n checkbox2: false\r\n});\r\n\r\nconst banderaChecks = ref(\"\");\r\n\r\nconst etapaTitulacionActiva = ref(\"\");\r\n\r\nconst indexPasoActual = ref(1);\r\n\r\n/*Metodos*/\r\n\r\nonMounted(() => {\r\n obtenerURL();\r\n llenarStepper();\r\n});\r\n\r\nfunction autoScrollInicio() {\r\n const theElement = document.getElementById(\"conversacion\");\r\n setTimeout(() => {\r\n theElement.scrollTop = theElement.scrollHeight - theElement.clientHeight;\r\n const arrayTest = document.querySelectorAll(\".usuario\");\r\n arrayTest[arrayTest.length - 1].classList.toggle(\"popup\");\r\n }, 100);\r\n}\r\n\r\nfunction mostrarDocumentosChecklistTitular() {\r\n router.push({\r\n name: \"contenido-checklist\",\r\n params: { figura: \"titular\", numero: \"0\" },\r\n query: { operacionId: operacion.value }\r\n });\r\n storeDocumentos.consumirDocumentos();\r\n}\r\n\r\nfunction mostrarDocumentosChecklistFiguras(figura, numero) {\r\n router.push({\r\n name: \"contenido-checklist\",\r\n params: { figura: figura, numero: numero },\r\n query: { operacionId: operacion.value }\r\n });\r\n}\r\n\r\n//Se ejecuta cuando el DOM esta listo\r\n// onMounted(() => {\r\n// setTimeout(() => {\r\n// autoScrollInicio();\r\n// }, 200);\r\n// });\r\n\r\nfunction esconder() {\r\n isVisible.value = !isVisible.value;\r\n document.getElementById(\"flecha\")?.classList.toggle(\"fa-arrow-right\");\r\n document.getElementById(\"flecha\")?.classList.toggle(\"fa-arrow-left\");\r\n}\r\n\r\n//Poner en Pascal Case los nombre\r\n\r\n// API\r\n// let operacionesActivas = await api.Cliente.Cliente.OperacionTitulacionApi.ObtenerOperacionesActivas();\r\n// const operacionTitulacionId = \"PI1aEtyhsyGiPcFvLeLP4Q==\";\r\n\r\nasync function guardarMensaje() {\r\n if (mensajeDeUsuario.value.length === 0) return;\r\n try {\r\n //objeto para mandar a API\r\n let mensajeUser = {\r\n operacionTitulacionId: operacionTitulacionId,\r\n mensaje: mensajeDeUsuario.value\r\n };\r\n\r\n //limpiando el textarea\r\n await api.Cliente.Cliente.OperacionTitulacionMensajeApi.GuardarMensaje(mensajeUser);\r\n mensajeDeUsuario.value = \"\";\r\n obetenerMensaje();\r\n //scroll del chat hasta abajo\r\n autoScrollInicio();\r\n //clase popUp\r\n\r\n console.log(\"Exito!\");\r\n console.log(\"Exito!\");\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n// nombreAsesor.value = await api.Cliente.Cliente.OperacionTitulacionApi.ObtenerNombreAsesorTitulacion(\r\n// operacionTitulacionId\r\n// );\r\n\r\n// async function obetenerMensaje() {\r\n// let respMensaje = await api.Cliente.Cliente.OperacionTitulacionMensajeApi.ObtenerMensajes(operacionTitulacionId);\r\n\r\n// historialMensajes.value = respMensaje.data.reverse();\r\n// }\r\n\r\n// obetenerMensaje();\r\n\r\nfunction formatearFecha(horario) {\r\n return new Intl.DateTimeFormat(\"es-ES\", {\r\n day: \"2-digit\",\r\n month: \"2-digit\",\r\n year: \"numeric\",\r\n hour: \"2-digit\",\r\n minute: \"2-digit\"\r\n })\r\n .format(new Date(horario))\r\n .replace(\",\", \"\");\r\n}\r\n\r\nfunction formatearTexto(textoChat) {\r\n return textoChat;\r\n}\r\n\r\nconst etapas = Core.Models.EtapaOperacionTitulacion;\r\n\r\n// *** rellenar Stepper ***\r\n\r\nconst objEtapas = [\r\n {\r\n id: etapas.IDENTIFICACION_DEL_PROYECTO,\r\n texto: \"Definición del proyecto\",\r\n componente: \"datos-generales\",\r\n index: 0\r\n },\r\n {\r\n id: etapas.INTEGRACION_DE_EXPEDIENTE,\r\n texto: \"Integración de Expediente\",\r\n componente: \"contenido-checklist\",\r\n index: 1\r\n },\r\n { id: etapas.ANÃLISIS, texto: \"Análisis\", componente: \"analisis-aes\", index: 2 },\r\n { id: etapas.FIRMA, texto: \"Firma\", componente: \"firma-aes\", index: 3 }\r\n];\r\n\r\nconst llenarStepper = _ => {\r\n if (etapaTitulacion[0].etapaTitulacion === \"FIRMA\") {\r\n indexPasoActual.value = 3;\r\n } else if (etapaTitulacion[0].etapaTitulacion === \"ANÃLISIS\") {\r\n indexPasoActual.value = 2;\r\n } else if (etapaTitulacion[0].etapaTitulacion === \"INTEGRACION_DE_EXPEDIENTE\") {\r\n indexPasoActual.value = 1;\r\n } else if (etapaTitulacion[0].etapaTitulacion === \"IDENTIFICACION_DEL_PROYECTO\") {\r\n indexPasoActual.value = 0;\r\n } else {\r\n indexPasoActual.value = null;\r\n }\r\n};\r\n\r\nconst obtenerURL = () => {\r\n const url = new URL(window.location.href).toString();\r\n if (url.includes(objEtapas[0].componente)) {\r\n etapaTitulacionActiva.value = objEtapas[0].id;\r\n } else if (url.includes(objEtapas[1].componente)) {\r\n etapaTitulacionActiva.value = objEtapas[1].id;\r\n } else if (url.includes(objEtapas[2].componente)) {\r\n etapaTitulacionActiva.value = objEtapas[2].id;\r\n } else if (url.includes(objEtapas[3].componente)) {\r\n etapaTitulacionActiva.value = objEtapas[3].id;\r\n } else {\r\n etapaTitulacionActiva.value = null;\r\n }\r\n};\r\n\r\n// *** Validacion ***\r\n\r\nconst onlyNumber = $event => {\r\n // console.log(\"Cp: \", dataCotitular.cpDomicilioParticular.length);\r\n let keyCode = $event.keyCode ? $event.keyCode : $event.which;\r\n if ((keyCode < 48 || keyCode > 57) && keyCode !== 46) {\r\n // 46 is dot\r\n $event.preventDefault();\r\n }\r\n};\r\nconst onlyAlpha = $event => {\r\n console.log($event);\r\n\r\n if (!(/[a-z]/i.test($event.key) || $event.keyCode == 32)) {\r\n $event.preventDefault();\r\n }\r\n};\r\n\r\nconst maxLength = ($event, property, max) => {\r\n if (property.length > max) {\r\n $event.preventDefault();\r\n } else {\r\n onlyNumber($event);\r\n }\r\n};\r\n\r\nconst check = ($event, boxNumber) => {\r\n console.log(checkBoxesState.property);\r\n\r\n checkBoxesState.checkbox1 = checkBoxesState.checkbox1 ? false : true;\r\n // checkBoxesState.boxNumber = checkBoxesState.boxNumber ? false : true;\r\n};\r\n\r\nconst toCurrency = (number, property) => {\r\n const exp = /(\\d)(?=(\\d{3})+(?!\\d))/g;\r\n const rep = \"$1,\";\r\n let arr = number.toString().split(\".\");\r\n arr[0] = arr[0].replace(exp, rep);\r\n number = arr[1] ? \"$\" + arr.join(\".\") : \"$\" + arr[0];\r\n dataCotitular.property = number;\r\n console.log(dataCotitular.property);\r\n};\r\n</script>\r\n\r\n<!-- *** SCSS *** -->\r\n<style scoped>\r\n.llenarLinea:after,\r\n.llenarPunto:before {\r\n background: #ffa000 !important;\r\n}\r\n\r\n.titulacion {\r\n color: #2f2d73;\r\n font-size: 36px;\r\n font-weight: 700;\r\n padding: 5% 0 1% 0;\r\n}\r\n.stepper-container {\r\n padding: 3%;\r\n width: 100%;\r\n max-height: 140px;\r\n}\r\n.stepper {\r\n width: 100%;\r\n padding-left: 19%;\r\n}\r\n\r\nul {\r\n color: #a1b5d8;\r\n font-size: 13px;\r\n}\r\n.active {\r\n color: #ffa000;\r\n font-weight: 700;\r\n}\r\n.stepper li {\r\n display: block;\r\n float: left;\r\n list-style-type: none;\r\n position: relative;\r\n text-align: center;\r\n width: 22%;\r\n}\r\n/* DOTS */\r\n.stepper li:before {\r\n background: #a1b5d8;\r\n border-radius: 50%;\r\n content: \"\";\r\n display: block;\r\n height: 14px;\r\n margin: 0 auto 10px auto;\r\n text-align: center;\r\n width: 14px;\r\n}\r\n.active:before {\r\n background: #ffa000 !important;\r\n bottom: 5px !important;\r\n height: 24px !important;\r\n position: relative;\r\n width: 24px !important;\r\n z-index: 1;\r\n}\r\n\r\n/* LINEA */\r\n.stepper li:not(:last-child):after {\r\n background-color: #a1b5d8;\r\n content: \"\";\r\n height: 2px;\r\n left: 54%;\r\n position: absolute;\r\n top: 6px;\r\n width: 92%;\r\n}\r\n\r\n/* BUTTON */\r\n.asesor {\r\n text-align: center;\r\n}\r\n\r\n.asesor-chat p,\r\n.usuario p {\r\n color: #2f2d73;\r\n margin: 0;\r\n font-size: 12px;\r\n}\r\n.asesor button {\r\n border-radius: 16px;\r\n border: 2px solid #ffa000;\r\n color: #ffa000;\r\n font-weight: 700;\r\n width: 204px;\r\n font-size: 14px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n.asesor .btn span {\r\n margin-left: 9px;\r\n}\r\n\r\n.asesor .btn svg {\r\n font-size: 18px;\r\n}\r\n/* BODY */\r\n.card {\r\n background: #ffffff;\r\n /* box-shadow: 0px 0px 11px rgba(0, 0, 0, 0.22); */\r\n /* max-height: 1351px; */\r\n}\r\n/**SideBar de navegación de formulario */\r\n#sidebar {\r\n border-right: 1px solid #a1b5d8;\r\n min-width: 200px;\r\n margin-right: 10px;\r\n width: 20%;\r\n color: #2f2d74 !important;\r\n}\r\n.seccion-interna .fa-circle-check {\r\n font-size: 18px;\r\n}\r\n\r\n.lista_sidebar > li:not(:first-child) {\r\n border-bottom: 1px solid #a1b5d8;\r\n}\r\n.lista__sidebar {\r\n list-style-type: none;\r\n}\r\n.lista__sidebar > li {\r\n padding: 3px 0;\r\n}\r\n\r\n/* LADO IZQUIERDO */\r\nsection {\r\n border-top: 1px solid #a1b5d8;\r\n display: flex;\r\n justify-content: space-between;\r\n min-height: 460px;\r\n}\r\n\r\n.izquierdo {\r\n display: flex;\r\n padding: 0;\r\n width: 100%;\r\n}\r\n\r\n.izquierdo h1 {\r\n color: #2f2d74;\r\n font-weight: 700;\r\n font-size: 24px;\r\n width: 100%;\r\n}\r\n/* INPUTS */\r\n#row-flex {\r\n display: flex;\r\n align-items: flex-start;\r\n}\r\n\r\n#row-flex .form-check {\r\n margin-top: 8px;\r\n}\r\n\r\n.form-select {\r\n border-radius: 8px;\r\n height: 44px;\r\n}\r\n\r\n.row {\r\n padding: 1% 0% 1% 0%;\r\n}\r\n\r\nlabel.container {\r\n color: #2f2d74;\r\n font-size: 14px;\r\n padding-left: 0;\r\n}\r\n\r\n.input-container.col {\r\n padding-left: 0;\r\n}\r\n\r\n.input-title {\r\n color: #2f2d74;\r\n font-weight: 700;\r\n font-size: 14px;\r\n padding: 2% 0% 2% 0;\r\n}\r\n\r\ninput[type=\"text\"],\r\ninput[type=\"date\"],\r\ninput[type=\"email\"],\r\ninput[type=\"number\"] {\r\n border-radius: 8px;\r\n width: 100%;\r\n color: #2f2d74;\r\n padding: 3%;\r\n}\r\n\r\n.h5.text-secondary {\r\n padding-left: 0;\r\n}\r\n\r\n.radio_si,\r\n.radio_no {\r\n cursor: pointer;\r\n}\r\n\r\n.radio_no {\r\n margin-left: 15%;\r\n}\r\n\r\n*:focus {\r\n outline: none;\r\n}\r\n\r\n.centro {\r\n width: auto;\r\n}\r\n.centro button {\r\n align-items: center;\r\n color: white;\r\n display: flex;\r\n flex-direction: column;\r\n height: 400px;\r\n justify-content: space-around;\r\n position: relative;\r\n top: 5%;\r\n width: 75px;\r\n border-radius: 8px 0px 0px 8px;\r\n transition: all 0.2s ease-in;\r\n z-index: 100 !important;\r\n}\r\n\r\n.centro button:hover {\r\n transform: scale(1.05);\r\n}\r\n\r\n.centro .btn svg {\r\n font-size: 22px !important;\r\n}\r\n.centro .btn p {\r\n transform: rotate(-90deg) !important;\r\n}\r\n\r\n.centro .btn p {\r\n color: white;\r\n font-size: 18px;\r\n width: 150px;\r\n}\r\n\r\n.btn-check:focus,\r\n.btn-primary,\r\n.btn-primary:focus,\r\n.btn:focus {\r\n border: none !important;\r\n box-shadow: none !important;\r\n}\r\n\r\n#siguiente {\r\n background: #ffa000 !important;\r\n border-radius: 15px;\r\n color: white;\r\n padding: 0.5% 2% 0.5% 2%;\r\n}\r\n\r\n/* CHAT */\r\n.conversacion {\r\n padding: 4%;\r\n overflow: scroll;\r\n max-height: 300px;\r\n}\r\n.derecho {\r\n width: 30%;\r\n border-left: 2px solid #a1b5d8;\r\n border-bottom: 0;\r\n z-index: 100 !important;\r\n background: white;\r\n}\r\n.asesor-chat {\r\n text-align: left !important;\r\n padding: 0;\r\n margin: 0% 15% 10% 0;\r\n}\r\n.usuario {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-end;\r\n margin: 10% 0;\r\n}\r\n.popup {\r\n animation: scale-display 0.8s;\r\n}\r\n.asesor-chat span,\r\n.usuario span {\r\n font-size: 10px;\r\n}\r\np.horario {\r\n font-weight: 400;\r\n font-size: 10px;\r\n color: #8ba7b7;\r\n}\r\n.mensaje-chat {\r\n color: #6e7599 !important;\r\n font-weight: 400 !important;\r\n background: #eceff2;\r\n border-radius: 8px;\r\n padding: 3%;\r\n}\r\n\r\n/* Ocultar las ventana del chat */\r\n.block {\r\n display: block;\r\n animation: scale-display 0.6s;\r\n}\r\n\r\n.hide {\r\n display: none;\r\n}\r\n\r\n.anchoIzquierdo {\r\n width: 70% !important;\r\n min-height: 460px;\r\n}\r\n\r\n.conversacion {\r\n height: 70%;\r\n overflow-x: hidden;\r\n}\r\n\r\n.mensaje {\r\n border-top: 2px solid #a1b5d8;\r\n height: 30%;\r\n padding: 3%;\r\n}\r\n.mensaje p {\r\n font-weight: 500;\r\n font-size: 13px;\r\n margin: 0;\r\n}\r\n.mensaje textarea {\r\n background: #eceff2;\r\n border: none;\r\n font-family: \"Poppins\";\r\n height: 60%;\r\n padding-bottom: 20%;\r\n width: 100%;\r\n font-size: 12px;\r\n border-radius: 5px;\r\n resize: none;\r\n overflow: hidden;\r\n}\r\n\r\n.mensaje button {\r\n border: 0;\r\n float: right;\r\n background: none;\r\n padding: 0;\r\n}\r\n.mensaje button img {\r\n width: 24px;\r\n transition: all 0.3s ease-in-out;\r\n}\r\n.mensaje button img:hover {\r\n transform: scale(1.3);\r\n}\r\n\r\n@keyframes scale-display {\r\n 0% {\r\n opacity: 0;\r\n transform: scale(0);\r\n -webkit-transform: scale(0);\r\n }\r\n\r\n 100% {\r\n opacity: 1;\r\n transform: scale(1);\r\n -webkit-transform: scale(1);\r\n }\r\n}\r\nspan {\r\n color: #2f2d73;\r\n font-weight: bold;\r\n}\r\na {\r\n font-weight: 500;\r\n color: #2f2d73;\r\n text-decoration: none;\r\n}\r\na.router-link-exact-active {\r\n color: #ffa000;\r\n font-weight: bold;\r\n}\r\n/* \r\n@keyframes scale-display--reversed {\r\n 0% {\r\n display: inline-flex;\r\n opacity: 1;\r\n transform: scale(1);\r\n -webkit-transform: scale(1);\r\n }\r\n 99% {\r\n display: inline-flex;\r\n opacity: 0;\r\n transform: scale(0);\r\n -webkit-transform: scale(0);\r\n }\r\n 100% {\r\n display: none;\r\n opacity: 0;\r\n transform: scale(0);\r\n -webkit-transform: scale(0);\r\n }\r\n} */\r\n\r\n/*\r\nSección comentada por orden de Angel\r\n\r\n.bloque {\r\n background: #eceff2;\r\n border-radius: 8px;\r\n color: #2f2d74;\r\n font-size: 14px;\r\n font-weight: 700;\r\n line-height: 21px;\r\n padding: 2% 2% 6% 2%;\r\n text-align: center;\r\n width: 30%;\r\n}\r\n\r\n.bloques-container {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-top: 5%;\r\n}\r\n*/\r\n\r\n.bg-secondary-hir {\r\n background-color: #f5f8fc;\r\n}\r\n</style>\r\n\r\n","const scriptRel = 'modulepreload';const seen = {};const base = '/';export const __vitePreload = function preload(baseModule, deps) {\n // @ts-ignore\n if (!__VITE_IS_MODERN__ || !deps || deps.length === 0) {\n return baseModule();\n }\n return Promise.all(deps.map((dep) => {\n // @ts-ignore\n dep = `${base}${dep}`;\n // @ts-ignore\n if (dep in seen)\n return;\n // @ts-ignore\n seen[dep] = true;\n const isCss = dep.endsWith('.css');\n const cssSelector = isCss ? '[rel=\"stylesheet\"]' : '';\n // @ts-ignore check if the file is already preloaded by SSR markup\n if (document.querySelector(`link[href=\"${dep}\"]${cssSelector}`)) {\n return;\n }\n // @ts-ignore\n const link = document.createElement('link');\n // @ts-ignore\n link.rel = isCss ? 'stylesheet' : scriptRel;\n if (!isCss) {\n link.as = 'script';\n link.crossOrigin = '';\n }\n link.href = dep;\n // @ts-ignore\n document.head.appendChild(link);\n if (isCss) {\n return new Promise((res, rej) => {\n link.addEventListener('load', res);\n link.addEventListener('error', () => rej(new Error(`Unable to preload CSS for ${dep}`)));\n });\n }\n })).then(() => baseModule());\n}","<template lang=\"pug\">\r\n.d-flex.flex-column.p-3.w-100.g-0\r\n HeaderForm\r\n Personales(ref=\"formP\")\r\n DomicilioParticular(ref=\"formDP\")\r\n DomicilioTrabajo(ref=\"formDT\")\r\n .d-flex.justify-content-end\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Siguiente\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineAsyncComponent, ref, watch } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nexport default {\r\n components: {\r\n DomicilioParticular: defineAsyncComponent(() => import(\"../components/DatosGenerales/DomicilioParticular.vue\")),\r\n DomicilioTrabajo: defineAsyncComponent(() => import(\"../components/DatosGenerales/DomicilioTrabajo.vue\")),\r\n Personales: defineAsyncComponent(() => import(\"../components/DatosGenerales/Personales.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"../components/HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup(props) {\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n const formP = ref();\r\n const formDP = ref();\r\n const formDT = ref();\r\n\r\n /**\r\n * Controlar que si todos son ok\r\n * entonces redireccionar a al siguiente seccion\r\n */\r\n const siguiente = () => {\r\n formP.value.validar();\r\n formDP.value.validar();\r\n formDT.value.validar();\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n\r\n if (\r\n store.$state.formulario_datos_generales_personales &&\r\n store.$state.formulario_datos_generales_domicilio_particular &&\r\n store.$state.formulario_datos_generales_domicilio_trabajo\r\n ) {\r\n store.formulario_datos_generales.completado = true;\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"ingresos\" });\r\n else router.push({ name: \"ingresos\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n store.formulario_datos_generales.completado = false;\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n }\r\n };\r\n return {\r\n siguiente,\r\n formP,\r\n formDP,\r\n formDT,\r\n store\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.d-flex.flex-column.px-3.py-3.justify-content-start.g-0.w-100\r\n HeaderForm\r\n General(ref=\"FormularioG\")\r\n .d-flex.justify-content-between.mt-5\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Siguiente\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineAsyncComponent, onMounted, ref, watch, onUpdated } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\n\r\nexport default {\r\n components: {\r\n General: defineAsyncComponent(() => import(\"../components/Ingresos/General.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup() {\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n const FormularioG = ref();\r\n /**Métodos */\r\n\r\n const siguiente = () => {\r\n FormularioG.value.validar();\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n\r\n if (store.$state.formulario_ingresos.completado) {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"gastos\" });\r\n else router.push({ name: \"gastos\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n }\r\n };\r\n\r\n return {\r\n siguiente,\r\n anterior: () => {\r\n if (store.tieneSesion) router.push({ name: \"datos-generales\" });\r\n else router.push({ name: \"datos-generales\", query: { operacionId: store.operacionTitulacionId } });\r\n },\r\n FormularioG,\r\n store\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style>\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n</style>\r\n","const simboloPesos = amount => {\r\n const exp = /(\\d)(?=(\\d{3})+(?!\\d))/g;\r\n const rep = \"$1,\";\r\n let arr = amount.toString().split(\".\");\r\n arr[0] = arr[0].replace(exp, rep);\r\n amount = arr[1] ? \"$\" + arr.join(\".\") : \"$\" + arr[0];\r\n return amount;\r\n};\r\n\r\nexport default simboloPesos;\r\n","const onlyNumbers = $event => {\r\n let keyCode = $event.keyCode ? $event.keyCode : $event.which;\r\n if ((keyCode < 48 || keyCode > 57) && keyCode !== 46) {\r\n // 46 is dot\r\n $event.preventDefault();\r\n }\r\n};\r\n\r\nexport default onlyNumbers;","<template lang=\"pug\">\r\nform.w-100(:class=\"{ 'was-validated': formularioValidado }\" ref=\"formulario\")\r\n .d-flex.p-3.flex-column.w-100.justify-content-between\r\n .div\r\n .row.w-100\r\n HeaderForm\r\n .col-4.input-container\r\n label.form-label.text-secondary Pago mensual a préstamos <br>\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyNumbers\"\r\n v-model=\"store.datos_figura[store.getFigura].pagoMensualPrestamo\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n )\r\n small.text-secondary (hipotecario, automóvil, personal, laboral etc.)\r\n .col-4.input-container\r\n label.form-label.text-secondary Pago mensual a tarjetas de crédito\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyNumbers\"\r\n v-model=\"store.datos_figura[store.getFigura].pagoTarjetaCredito\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n .col-4.input-container\r\n label.form-label.text-secondary Pago mensual de renta\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyNumbers\"\r\n v-model=\"store.datos_figura[store.getFigura].pagoRenta\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n\r\n .row.w-100.mt-3\r\n .col-4.input-container\r\n label.form-label.text-secondary Gasto mensual colegiaturas\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].pagoColegiaturas\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n .col-4.input-container\r\n label.form-label.text-secondary Gasto familiar mensual\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].pagoGastoFamiliar\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n .col-4.input-container\r\n label.form-label.text-secondary Otros gastos\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].otrosEgresos\"\r\n :configuracion=\"{ emptyInputBehavior: '0', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n .row.w-100.mt-3\r\n .col-4.input-container(v-if=\"store.getFigura == 0\")\r\n label.form-label.text-secondary Mensualidad HIR Casa\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].mensualidadHirCasa\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n ) \r\n .col-4.input-container\r\n label.form-label.text-secondary Total gastos\r\n .input-group.mb-3\r\n span.input-group-text $\r\n HirAutonumeric.form-control(\r\n disabled\r\n required\r\n type=\"text\"\r\n v-model=\"totalGastos\"\r\n :configuracion=\"{ emptyInputBehavior: 'min', maximumValue: '15000000', minimumValue: '0', currencySymbol: '' }\"\r\n ) \r\n\r\n .d-flex.justify-content-between.pt-5\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Siguiente\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport simboloPesos from \"../helpers/simboloPesos\";\r\nimport { ref, defineAsyncComponent, computed, watch } from \"vue\";\r\nimport { useRouter, useRoute } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport onlyNumbers from \"../helpers/onlyNumbers\";\r\n\r\nexport default {\r\n components: {\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\")),\r\n HirAutonumeric: defineAsyncComponent(() => import(\"@/components/HirAutonumeric.vue\"))\r\n },\r\n setup() {\r\n //Variables\r\n const router = useRouter(); //Navegar hacia un lugar\r\n\r\n const route = useRoute(); //Navegar hacia un lugar\r\n\r\n const formulario = ref(\"\");\r\n const formularioValidado = ref(false);\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n const totalGastos = computed(() => {\r\n const valores = [\r\n store.datos_figura[store.getFigura].pagoMensualPrestamo || 0,\r\n store.datos_figura[store.getFigura].pagoTarjetaCredito || 0,\r\n store.datos_figura[store.getFigura].pagoRenta || 0,\r\n store.datos_figura[store.getFigura].pagoColegiaturas || 0,\r\n store.datos_figura[store.getFigura].pagoGastoFamiliar || 0,\r\n store.datos_figura[store.getFigura].otrosEgresos || 0,\r\n store.datos_figura[store.getFigura].mensualidadHirCasa || 0\r\n ];\r\n return valores.reduce((a, b) => a + b, 0);\r\n });\r\n\r\n //metodos\r\n const validar = () => {\r\n let valido = formulario.value.checkValidity();\r\n formularioValidado.value = true;\r\n if (valido) {\r\n store.$state.formulario_gastos.completado = true;\r\n } else {\r\n store.$state.formulario_gastos.completado = false;\r\n return;\r\n }\r\n };\r\n const siguiente = () => {\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n validar();\r\n\r\n if (store.$state.formulario_gastos) {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"patrimonio\" });\r\n else router.push({ name: \"patrimonio\", query: { operacionId: store.operacionTitulacionId } });\r\n // store.titularCompletado();\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n return;\r\n }\r\n };\r\n watch(\r\n () => route,\r\n () => {\r\n formularioValidado.value = false;\r\n store.asignarValoresGastos();\r\n },\r\n { deep: true }\r\n );\r\n return {\r\n store,\r\n simboloPesos,\r\n siguiente,\r\n validar,\r\n totalGastos,\r\n formularioValidado,\r\n onlyNumbers,\r\n formulario,\r\n anterior: () => {\r\n if (store.tieneSesion) router.push({ name: \"ingresos\" });\r\n else router.push({ name: \"ingresos\", query: { operacionId: store.operacionTitulacionId } });\r\n }\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\nsmall {\r\n font-size: 10px;\r\n}\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n.input-group input {\r\n z-index: 0 !important;\r\n}\r\n</style>\r\n","const funcion = $event => {\r\n if (!(/[a-z]/i.test($event.key) || $event.keyCode == 32 || $event.keyCode == 209 || $event.keyCode == 241))\r\n $event.preventDefault();\r\n};\r\n\r\nexport default funcion;\r\n","<template lang=\"pug\">\r\nform(:class=\"{ 'was-validated': formularioValidado }\" ref=\"formulario\")\r\n .d-flex.flex-column.p-3.w-100.justify-content-between.g-0\r\n HeaderForm\r\n .div\r\n .row.w-100.mt-3\r\n .col-4\r\n label.form-label.text-secondary ¿Su vendedor es persona fÃsica o moral?\r\n //- select.form-select.form-select(aria-label=\".form-select-sm example\" v-model=\"tipo_vendedor\")\r\n //- option(v-for=\"opcion in opciones\" :key=\"opcion.value\" v-bind:value=\"opcion.value\") \r\n //- | {{ opcion.texto }}\r\n .container.g-1\r\n .form-check.form-check-inline\r\n input#fisica.form-check-input(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n name=\"tipo\"\r\n type=\"radio\"\r\n v-bind:value=\"true\"\r\n v-model=\"store.datos_figura[store.getFigura].vendedorEsPersonaFisica\"\r\n required\r\n @change=\"asignarVendedor\"\r\n )\r\n label.form-check-label(for=\"fisica\") FÃsica\r\n .form-check.form-check-inline\r\n input#moral.form-check-input(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n name=\"tipo\"\r\n type=\"radio\"\r\n v-bind:value=\"false\"\r\n v-model=\"store.datos_figura[store.getFigura].vendedorEsPersonaFisica\"\r\n required\r\n @change=\"asignarVendedor\"\r\n )\r\n label.form-check-label(for=\"moral\") Moral\r\n template(v-if=\"store.datos_figura[store.getFigura].vendedorEsPersonaFisica\")\r\n .row.py-3\r\n .col-4\r\n label.form-label.text-secondary Nombre del vendedor(es)\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].nombreVendedor\"\r\n @keypress=\"onlyAlfa\"\r\n )\r\n .col-4\r\n label.form-label.text-secondary Apellido paterno\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n v-model=\"store.datos_figura[store.getFigura].apellidoPaternoVendedor\"\r\n )\r\n .col-4\r\n label.form-label.text-secondary Apellido materno\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n v-model=\"store.datos_figura[store.getFigura].apellidoMaternoVendedor\"\r\n )\r\n .row\r\n .col-4\r\n label.form-label.text-secondary Número de teléfono particular\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].telefonoVendedor\"\r\n @keypress=\"onlyNumbers\"\r\n maxlength=\"10\"\r\n minlength=\"10\"\r\n )\r\n .col-4\r\n label.form-label.text-secondary Correo electrónico personal\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"email\"\r\n v-model=\"store.datos_figura[store.getFigura].correoVendedor\"\r\n pattern=\"[Aa-Zz0-9._%+-]+@[Aa-zZ0-9.-]+\\.[Aa-zZ]{2,4}$\"\r\n )\r\n .col-4.mt-3\r\n label.form-label.text-secondary Estado civil\r\n select.form-select.form-select(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n aria-label=\".form-select-sm example\"\r\n v-model=\"store.datos_figura[store.getFigura].estadoCivilVendedor\"\r\n required\r\n @change.prevent=\"validarEstadoCivilRegimenMatrimonial\"\r\n )\r\n option(v-for=\"estado in catalogoEstadoCivil\" :key=\"estado.id\" v-bind:value=\"estado.id\")\r\n | {{ estado.texto }}\r\n .col-4.mt-3(v-if=\"esCasado\")\r\n label.form-label.text-secondary Régimen matrimonial\r\n select.form-select.form-select(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n aria-label=\".form-select-sm example\"\r\n v-model=\"store.datos_figura[store.getFigura].regimenMatrimonialVendedor\"\r\n required\r\n @change.prevent=\"validarEstadoCivilRegimenMatrimonial\"\r\n )\r\n option(v-for=\"regimen in catalogoRegimenMatrimonial\" :key=\"regimen.id\" v-bind:value=\"regimen.id\")\r\n | {{ regimen.texto }}\r\n .row(v-if=\"esCasado\")\r\n .col-4.mt-3\r\n label.form-label.text-secondary Nombre del cónyuge\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n v-model=\"store.datos_figura[store.getFigura].nombreConyugeVendedor\"\r\n )\r\n .col-4.mt-3\r\n label.form-label.text-secondary Apellido paterno\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n v-model=\"store.datos_figura[store.getFigura].apellidoPaternoConyugeVendedor\"\r\n )\r\n .col-4.mt-3\r\n label.form-label.text-secondary Apellido materno\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n v-model=\"store.datos_figura[store.getFigura].apellidoMaternoConyugeVendedor\"\r\n )\r\n template(v-if=\"!store.datos_figura[store.getFigura].vendedorEsPersonaFisica\")\r\n .col-4\r\n label.form-label.text-secondary Nombre del desarrollador\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n v-model=\"store.datos_figura[store.getFigura].nombreDesarrollo\"\r\n )\r\n .col-4\r\n label.form-label.text-secondary Nombre del contacto del desarrollador\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyAlfa\"\r\n maxlength=\"10\"\r\n v-model=\"store.datos_figura[store.getFigura].nombreContactoDesarrollo\"\r\n )\r\n .col-4.mt-3\r\n label.form-label.text-secondary Teléfono\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"text\"\r\n @keypress=\"onlyNumbers\"\r\n maxlength=\"10\"\r\n minlength=\"10\"\r\n v-model=\"store.datos_figura[store.getFigura].telefonoDesarrollo\"\r\n )\r\n .col-4.mt-3\r\n label.form-label.text-secondary Correo\r\n input.form-control(\r\n :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\"\r\n required\r\n type=\"email\"\r\n v-model=\"store.datos_figura[store.getFigura].correoDesarrollo\"\r\n )\r\n .d-flex.justify-content-between.mt-5\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\")\r\n | Siguiente\r\n</template>\r\n\r\n<script>\r\nimport { defineAsyncComponent, onMounted, ref, watch } from \"vue\";\r\nimport { useRouter, useRoute } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport onlyAlfa from \"../helpers/onlyAlfa\";\r\nimport onlyNumbers from \"../helpers/onlyNumbers\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { Core, Cliente } from \"@/servicios/api\";\r\nimport api from \"@/servicios/apiCliente\";\r\n\r\nexport default {\r\n components: {\r\n UsoDeFinanciamiento: defineAsyncComponent(() => import(\"./UsoDeFinanciamiento/UsoDeFinanciamiento.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup() {\r\n //variables\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const vendedor_fisica = ref(true);\r\n const tipo_vendedor = ref(\"fisica\");\r\n const formulario = ref(\"\");\r\n const formularioValidado = ref(false);\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n const estadoCivil = Core.Models.EstadoCivil;\r\n const regimenMatrimonial = Core.Models.RegimenMatrimonial;\r\n const catalogoEstadoCivil = ref([{}]);\r\n const catalogoRegimenMatrimonial = ref([{}]);\r\n const route = useRoute(); //Navegar hacia un lugar\r\n let esCasado = ref(false);\r\n let esCasadoEnSociedadConyugal = ref(false);\r\n\r\n const opciones = ref([\r\n {\r\n texto: \"FÃsica\",\r\n value: \"fisica\"\r\n },\r\n {\r\n texto: \"Moral\",\r\n value: \"moral\"\r\n }\r\n ]);\r\n\r\n /** Variables de store */\r\n const { datos_figura } = storeToRefs(store);\r\n\r\n //Metodos\r\n const validarEstadoCivilRegimenMatrimonial = () => {\r\n if (store.datos_figura[store.getFigura].estadoCivilVendedor == \"CASADO\") {\r\n esCasado.value = true;\r\n } else {\r\n esCasado.value = false;\r\n store.datos_figura[store.getFigura].nombreConyugeVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoPaternoConyugeVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoMaternoConyugeVendedor = \"\";\r\n }\r\n };\r\n\r\n /** Métodos */\r\n onMounted(() => {\r\n validarEstadoCivilRegimenMatrimonial();\r\n });\r\n watch(route, () => {\r\n if (route.params.figura == undefined) return;\r\n validarEstadoCivilRegimenMatrimonial();\r\n });\r\n const validar = () => {\r\n let valido = formulario.value.checkValidity();\r\n formularioValidado.value = true;\r\n if (valido) {\r\n store.$state.formulario_vendedor.completado = true;\r\n } else {\r\n store.$state.formulario_vendedor.completado = false;\r\n return;\r\n }\r\n };\r\n\r\n const CargarCatalogoEstadoCivil = () => {\r\n catalogoEstadoCivil.value = [\r\n { id: estadoCivil.SOLTERO, texto: \"Soltero\" },\r\n { id: estadoCivil.CASADO, texto: \"Casado\" },\r\n { id: estadoCivil.VIUDO, texto: \"Viudo\" },\r\n { id: estadoCivil.DIVORCIADO, texto: \"Divorciado\" },\r\n { id: estadoCivil.UNIÓN_LIBRE, texto: \"Unión libre \" }\r\n ];\r\n };\r\n const CargarCatalogoRegimenMatrimonial = () => {\r\n catalogoRegimenMatrimonial.value = [\r\n { id: regimenMatrimonial.SOCIEDAD_CONYUGAL, texto: \"Sociedad Conyugal\" },\r\n { id: regimenMatrimonial.SEPARACIÓN_DE_BIENES, texto: \"Separación De Bienes\" }\r\n ];\r\n };\r\n\r\n CargarCatalogoEstadoCivil();\r\n CargarCatalogoRegimenMatrimonial();\r\n // single ref\r\n // watch(datos_figura[store.getFigura].value, datos => {\r\n // if (datos[store.getDataFigura].vendedorEsPersonaFisica == true) vendedor_fisica.value = true;\r\n // else vendedor_fisica.value = false;\r\n // });\r\n\r\n const asignarVendedor = () => {\r\n if (store.$state.datos_figura[store.getFigura].vendedorEsPersonaFisica) {\r\n store.datos_figura[store.getFigura].nombreDesarrollo = \"\";\r\n store.datos_figura[store.getFigura].nombreContactoDesarrollo = \"\";\r\n store.datos_figura[store.getFigura].telefonoDesarrollo = \"\";\r\n store.datos_figura[store.getFigura].correoDesarrollo = \"\";\r\n } else {\r\n store.datos_figura[store.getFigura].nombreVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoPaternoVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoMaternoVendedor = \"\";\r\n store.datos_figura[store.getFigura].telefonoVendedor = \"\";\r\n store.datos_figura[store.getFigura].correoVendedor = \"\";\r\n store.datos_figura[store.getFigura].estadoCivilVendedor = null;\r\n store.datos_figura[store.getFigura].regimenMatrimonialVendedor = null;\r\n store.datos_figura[store.getFigura].nombreConyugeVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoPaternoConyugeVendedor = \"\";\r\n store.datos_figura[store.getFigura].apellidoMaternoConyugeVendedor = \"\";\r\n }\r\n };\r\n const siguiente = () => {\r\n validar();\r\n\r\n if (store.$state.formulario_vendedor.completado) {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"observaciones\" });\r\n else router.push({ name: \"observaciones\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n }\r\n };\r\n watch(\r\n () => route,\r\n () => {\r\n formularioValidado.value = false;\r\n },\r\n { deep: true }\r\n );\r\n return {\r\n tipo_vendedor,\r\n onlyNumbers,\r\n validar,\r\n onlyAlfa,\r\n formulario,\r\n vendedor_fisica,\r\n formularioValidado,\r\n store,\r\n opciones,\r\n siguiente,\r\n validarEstadoCivilRegimenMatrimonial,\r\n esCasado,\r\n esCasadoEnSociedadConyugal,\r\n anterior: () => {\r\n if (store.tieneSesion) router.push({ name: \"uso-financiamiento\" });\r\n else router.push({ name: \"uso-financiamiento\", query: { operacionId: store.operacionTitulacionId } });\r\n },\r\n catalogoEstadoCivil,\r\n catalogoRegimenMatrimonial,\r\n asignarVendedor\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.d-flex.flex-column.p-3.w-100.justify-content-start.g-0\r\n HeaderForm\r\n PatrimonioGeneral(ref=\"formPG\")\r\n .d-flex.justify-content-between.mt-5\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Siguiente\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineAsyncComponent, ref } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\n\r\nexport default {\r\n components: {\r\n PatrimonioGeneral: defineAsyncComponent(() => import(\"./Patrimonio/PatrimonioGeneral.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup(props, ctx) {\r\n //variables\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const formPG = ref();\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n\r\n //metodos\r\n const siguiente = () => {\r\n formPG.value.validar();\r\n\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n if (store.$state.formulario_patrimonio.completado) {\r\n if (props.figura != \"titular\") {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"observaciones\" });\r\n else router.push({ name: \"observaciones\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"uso-financiamiento\" });\r\n else router.push({ name: \"uso-financiamiento\", query: { operacionId: store.operacionTitulacionId } });\r\n }\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n }\r\n };\r\n const anterior = () => {\r\n if (store.tieneSesion) router.push({ name: \"gastos\" });\r\n else router.push({ name: \"gastos\", query: { operacionId: store.operacionTitulacionId } });\r\n };\r\n return {\r\n siguiente,\r\n anterior,\r\n formPG,\r\n store\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.d-flex.flex-column.p-3.w-100.justify-content-start.g-0\r\n HeaderForm\r\n ObservacionesGenerales(ref=\"formOG\")\r\n // Button trigger modal\r\n\r\n .d-flex.justify-content-between.mt-5\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(type=\"button\" style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Guardar y enviar\r\n button.btn.btn-primary(v-show=\"false\" type=\"button\" data-bs-toggle=\"modal\" data-bs-target=\"#staticBackdrop\" style=\"width: 100px\" ref=\"modalPdf\")\r\n //- | Mostrat modal\r\n #staticBackdrop.modal.fade(data-bs-backdrop=\"static\" data-bs-keyboard=\"false\" tabindex=\"-1\" aria-labelledby=\"staticBackdropLabel\" aria-hidden=\"true\")\r\n .modal-dialog\r\n .modal-content\r\n .modal-header\r\n h5#staticBackdropLabel.modal-title \r\n | Estas a punto de confirmar que todos tus datos han sido capturados\r\n button.btn-close(type=\"button\" data-bs-dismiss=\"modal\" aria-label=\"Close\" @click=\"aceptoElUsuario\" value=\"false\")\r\n .modal-footer\r\n button.btn.btn-secondary(type=\"button\" data-bs-dismiss=\"modal\" @click=\"aceptoElUsuario\" value=\"false\") Cerrar\r\n button.btn.btn-primary(type=\"button\" @click=\"aceptoElUsuario\" value=\"true\" data-bs-dismiss=\"modal\" aria-label=\"Close\") Acepto\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineAsyncComponent, ref, watch } from \"vue\";\r\nimport { useRouter, useRoute } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\n\r\nexport default {\r\n components: {\r\n ObservacionesGenerales: defineAsyncComponent(() => import(\"./Observaciones/ObservacionesGenerales.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup(props) {\r\n //variables\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const formOG = ref();\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n const route = useRoute(); //Navegar hacia un lugar\r\n const muestraPopup = ref(false);\r\n const modalPdf = ref();\r\n\r\n //metodos\r\n const aceptoElUsuario = e => {\r\n const respUsuario = e.target.value;\r\n\r\n if (respUsuario == \"true\") {\r\n store.datos_figura[store.getFigura].estudioBloqueado = true;\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n } else {\r\n store.datos_figura[store.getFigura].estudioBloqueado = false;\r\n }\r\n };\r\n\r\n const siguiente = () => {\r\n formOG.value.validar();\r\n\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n\r\n if (store.$state.formulario_observaciones.completado) {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.SUCCESS,\r\n body: \"Formulario guardado correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n // store.titularCompletado();\r\n muestraPopup.value = true;\r\n modalPdf.value.click();\r\n\r\n //Se muestra el PDF de la figura en cuestión\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n muestraPopup.value = false;\r\n }\r\n };\r\n const anterior = () => {\r\n if (props.figura != \"titular\") {\r\n if (store.tieneSesion) router.push({ name: \"patrimonio\" });\r\n else router.push({ name: \"patrimonio\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n if (store.tieneSesion) router.push({ name: \"vendedor\" });\r\n else router.push({ name: \"vendedor\", query: { operacionId: store.operacionTitulacionId } });\r\n }\r\n };\r\n\r\n return {\r\n siguiente,\r\n anterior,\r\n formOG,\r\n store,\r\n aceptoElUsuario,\r\n muestraPopup,\r\n modalPdf\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.form-label {\r\n font-size: 14px;\r\n font-weight: 600;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.d-flex.flex-column.p-3.w-100\r\n HeaderForm\r\n UsoDeFinanciamiento(ref=\"formUF\")\r\n .d-flex.justify-content-between\r\n button.btn.btn-outline-primary(style=\"width: 100px\" @click=\"anterior\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Anterior\r\n button.btn.btn-primary.text-white(style=\"width: 100px\" @click=\"siguiente\" :disabled=\"store.datos_figura[store.getFigura].estudioBloqueado\")\r\n | Siguiente\r\n</template>\r\n<script>\r\nimport { defineAsyncComponent, ref } from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nexport default {\r\n components: {\r\n UsoDeFinanciamiento: defineAsyncComponent(() => import(\"./UsoDeFinanciamiento/UsoDeFinanciamiento.vue\")),\r\n HeaderForm: defineAsyncComponent(() => import(\"./HeaderForm.vue\"))\r\n },\r\n props: [\"figura\"],\r\n setup() {\r\n //variables\r\n const router = useRouter(); //Navegar hacia un lugar\r\n const formUF = ref();\r\n const store = useStoreTitular();\r\n const $store = useStore();\r\n\r\n const { formulario_uso_financiamiento } = storeToRefs(store);\r\n\r\n //metodos\r\n const siguiente = () => {\r\n formUF.value.validar();\r\n\r\n //Validar ruta para determinar el camino correcto segun la figura\r\n if (store.$state.formulario_uso_financiamiento.completado) {\r\n store.guardarFigura(store.$state.datos_figura[store.figuraActual]);\r\n if (store.tieneSesion) router.push({ name: \"vendedor\" });\r\n else router.push({ name: \"vendedor\", query: { operacionId: store.operacionTitulacionId } });\r\n } else {\r\n $store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"Llenar todos los campos correctamente.\",\r\n mensaje: \"Texto\"\r\n });\r\n }\r\n };\r\n return {\r\n siguiente,\r\n formUF,\r\n store,\r\n anterior: () => {\r\n if (store.tieneSesion) router.push({ name: \"patrimonio\" });\r\n else router.push({ name: \"patrimonio\", query: { operacionId: store.operacionTitulacionId } });\r\n }\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","<template lang=\"pug\">\r\nrouter-view\r\n</template>\r\n\r\n<script>\r\nimport { watch, watchEffect, ref, onMounted } from \"vue\";\r\nimport { useRouter, useRoute } from \"vue-router\";\r\nimport { useStoreTitular } from \"../storeTitular\";\r\n/**\r\n * Router : Navegación crear\r\n * Route : Rutas obtener\r\n */\r\nexport default {\r\n props: [\"figura\"],\r\n\r\n setup(props) {\r\n // const router = useRouter();\r\n // console.log(\"Router\", router);\r\n const asignarFigura = ref();\r\n const mifigura = ref(props.figura);\r\n const route = useRoute();\r\n const router = useRouter();\r\n const store = useStoreTitular();\r\n const numero = ref();\r\n\r\n watch(route, () => {\r\n if (route.params.figura == undefined) return;\r\n if (route.query.operacionId) {\r\n asignarFiguraInicial();\r\n store.operacionTitulacionId = route.query.operacionId;\r\n store.segundoToken(route.query.operacionId);\r\n } else {\r\n router.replace({ query: {} });\r\n asignarFiguraInicial();\r\n store.ObtenerOperacionesAtivasSesion();\r\n }\r\n });\r\n\r\n const asignarFiguraInicial = () => {\r\n store.figuraActual = route.params.numero;\r\n };\r\n\r\n return {};\r\n }\r\n};\r\n</script>\r\n","<template lang=\"pug\">\r\n.container \r\n //Spinner\r\n h6.text-danger.mb-3 Documentos faltantes por cargar: {{ documentosRechazados.reduce((prev, curr) => prev + curr) + documentosAsignados.reduce((prev, curr) => prev + curr) }}\r\n p(v-if=\"documentosPorEntidades.length == 0\") El asesor en breve indicará los documentos necesarios para tú trámite\r\n .text-center.text-primary(v-if=\"!jsonCargado\")\r\n .spinner-border(role=\"status\")\r\n span.sr-only Cargando Checklist...\r\n #checklist.accordion(v-else)\r\n .accordion-item(v-for=\"(entidad, x) in documentosPorEntidades\" :key=\"entidad\")\r\n h2.accordion-header(:id=\"'panelsStayOpen-heading-' + entidad.entidad\")\r\n button.accordion-button(\r\n type=\"button\"\r\n data-bs-toggle=\"collapse\"\r\n :data-bs-target=\"'#panelsStayOpen-' + entidad.entidad\"\r\n aria-expanded=\"true\"\r\n :aria-controls=\"'#panelsStayOpen-' + entidad.entidad\"\r\n ) \r\n p.font-weight-bold.text-secondary.mb-0.d-flex.align-items-center\r\n i.fa-solid.fa-angle-right.me-3.text-primary(:id=\"'flecha-' + entidad.entidad\")\r\n .figura-collapse.me-5.text-secondary\r\n p.text-secondary.mb-0 {{ asignarEtiquetaEntidades(entidad.entidad) }}\r\n .contadores.w-100.d-flex.align-items-center.justify-content-end.text-secondary\r\n p.contador-title\r\n | Aceptado\r\n .grey.d-flex.align-items-center.justify-content-center.ms-2\r\n | {{ documentosAceptados[x] ? documentosAceptados[x] : 0 }}\r\n p.ms-3.contador-title\r\n | Rechazado\r\n .grey.d-flex.align-items-center.justify-content-center.ms-2\r\n | {{ documentosRechazados[x] ? documentosRechazados[x] : 0 }}\r\n p.ms-3.contador-title\r\n | Asignado\r\n .grey.d-flex.align-items-center.justify-content-center.ms-2\r\n | {{ documentosAsignados[x] ? documentosAsignados[x] : 0 }}\r\n .accordion-collapse.collapse(:aria-labelledby=\"'panelsStayOpen-heading-' + entidad.entidad\" :id=\"'panelsStayOpen-' + entidad.entidad\")\r\n .accordion-body.py-2(v-for=\"categoria in entidad.documentosPorCategoria\" :key=\"categoria\")\r\n strong.text-secondary {{ asignarEtiquetaCategoria(categoria.categoria) }}\r\n br\r\n .inner-documento.d-flex.justify-content-between.text-secondary.align-items-center.my-1(v-for=\"documento in categoria.documentos\" :key=\"documento\")\r\n .left\r\n | {{ documento.nombre }}\r\n .center.inner-options.center.d-flex.justify-content-between.align-items-center.text-center.ps-1\r\n button.btn.btn-link(\r\n :id=\"'spinner-' + documento.documentoTramiteTitulacionId\"\r\n type=\"button\"\r\n :class=\"documento.guardado || documento.estatus == 0 ? `text-primary spinner-${documento.documentoTramiteTitulacionId}` : `text-info spinner-${documento.documentoTramiteTitulacionId}`\"\r\n @click=\"observarDocumentoTitular(entidad.entidad, documento.documentoTramiteTitulacionId, categoria.categoria)\"\r\n :disabled=\"documento.estatus == 0 || documento.estatus == 1 || documento.estatus == 2 ? false : true\"\r\n )\r\n i.fa-solid.fa-eye.me-2\r\n | Ver\r\n button.btn.btn-link.text-primary.spinner-hide(type=\"button\" disabled=\"\" :class=\"'spinner-' + documento.documentoTramiteTitulacionId\")\r\n span.spinner-border.spinner-border-sm(role=\"status\" aria-hidden=\"true\")\r\n |\r\n // Button trigger modal\r\n button.btn.btn-link.me-3(\r\n type=\"button\"\r\n data-bs-toggle=\"modal\"\r\n :data-bs-target=\"'#' + componentId + 'modalChecklist'\"\r\n v-if=\"documento.estatus == 2 || documento.estatus == 4\"\r\n :class=\"documento.guardado || documento.guardado == null || documento.estatus == 2 || documento.estatus == 4 ? 'text-primary' : 'text-info'\"\r\n :disabled=\"documento.estatus == 2 || documento.estatus == 4 ? false : true\"\r\n @click=\"parametrosAcargar(documento.documentoTramiteTitulacionId, categoria.categoria, entidad.entidad, documento.comentario)\"\r\n )\r\n i.fa-solid.fa-arrow-up-from-bracket.me-2\r\n | Cargar\r\n .right.d-flex.justify-content-between.align-items-center.text-center.pe-5\r\n .text-primary.rounded-pill.py-1.px-3(href=\"\" :class=\"documento.estatus == 1 ? 'verde' : documento.estatus == 2 ? 'rojo' : ' '\") \r\n | {{ documento.estatus == 1 ? \"Aceptado\" : documento.estatus == 2 ? \"Rechazado\" : \"\" }}\r\n button.btn.btn-link.text-danger.d-flex.justify-content-between.align-items-center.text-center(\r\n type=\"button\"\r\n data-bs-toggle=\"modal\"\r\n :data-bs-target=\"'#' + componentId + 'modalComentario'\"\r\n v-if=\"documento.comentario && documento.estatus !== 1 && documento.estatus !== 0\"\r\n @click=\"parametrosAcargar(documento.documentoTramiteTitulacionId, categoria.categoria, entidad.entidad, documento.comentario)\"\r\n )\r\n i.fa-solid.fa-message.fs-5.me-2\r\n\r\n// Modal\r\n.modal.fade(tabindex=\"-1\" aria-labelledby=\"modalChecklistLabel\" aria-hidden=\"true\" :id=\"componentId + 'modalChecklist'\")\r\n .modal-dialog.modal-dialog-centered\r\n .modal-content\r\n .modal-header\r\n .modal-title \r\n h6 Cargar documento\r\n .modal-body\r\n input(type=\"file\" name=\"\" accept=\"image/*,.pdf,.zip\" :disabled=\"storeDocumentos.cargando\" :id=\"componentId + 'archivoUsuario'\")\r\n .modal-footer\r\n button.btn.btn-outline-primary(\r\n type=\"button\"\r\n data-bs-dismiss=\"modal\"\r\n @click=\"funcionConsumirJSON(estudioSocioeconomicoId)\"\r\n :disabled=\"storeDocumentos.cargando\"\r\n ) Cerrar\r\n button.btn.btn-primary.text-white(\r\n v-if=\"!storeDocumentos.cargando\"\r\n type=\"button\"\r\n @click=\"guardarDocumento(documentoAcargar, categoriaAcargar, entidadAcargar)\"\r\n ) Cargar\r\n button.btn.btn-primary.text-white(v-else type=\"button\" disabled=\"\")\r\n span.spinner-border.spinner-border-sm(role=\"status\" aria-hidden=\"true\")\r\n |\r\n | Cargando...\r\n.modal.fade(tabindex=\"-1\" aria-labelledby=\"modalComentarioLabel\" aria-hidden=\"true\" :id=\"componentId + 'modalComentario'\")\r\n .modal-dialog\r\n .modal-content\r\n .modal-header\r\n .modal-body\r\n | {{ comentarioAcargar }}\r\n .modal-footer\r\n button.btn.btn-outline-primary(type=\"button\" data-bs-dismiss=\"modal\") Cerrar\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { ref, watch } from \"vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport * as bootstrap from \"bootstrap\";\r\nimport { useStoreDocumentos } from \"@/Aplicaciones/Cliente/Areas/Cliente/storeDocumentos\";\r\nimport { useStoreTitular } from \"@/Aplicaciones/Cliente/Areas/Cliente/storeTitular\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport * as utilidades from \"@/utilidades\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\n\r\nexport default {\r\n props: [\"datos\"],\r\n\r\n methods: {\r\n asignarEtiquetaEntidades(entidad) {\r\n let texto = \"\";\r\n this.entidadesConAcento.forEach(element => {\r\n if (element.nombre == entidad) {\r\n texto = element.texto;\r\n }\r\n });\r\n return texto;\r\n },\r\n asignarEtiquetaCategoria(categoria) {\r\n let texto = \"\";\r\n this.categoriasConAcento.forEach(element => {\r\n if (element.nombre == categoria) {\r\n texto = element.texto;\r\n }\r\n });\r\n return texto;\r\n }\r\n },\r\n\r\n methods: {\r\n asignarEtiquetaEntidades(entidad) {\r\n let texto = \"\";\r\n this.entidadesConAcento.forEach(element => {\r\n if (element.nombre == entidad) {\r\n texto = element.texto;\r\n }\r\n });\r\n return texto;\r\n },\r\n asignarEtiquetaCategoria(categoria) {\r\n let texto = \"\";\r\n this.categoriasConAcento.forEach(element => {\r\n if (element.nombre == categoria) {\r\n texto = element.texto;\r\n }\r\n });\r\n return texto;\r\n }\r\n },\r\n setup(props) {\r\n //VARIABLES\r\n const componentId = ref(utilidades.generarId());\r\n\r\n const misDatos = ref(props.datos);\r\n const figuraObtenida = ref({});\r\n const documentosTotales = ref([]);\r\n const documentosAceptados = ref([0]);\r\n const documentosRechazados = ref([0]);\r\n const documentosOpcionales = ref([]);\r\n const documentosAsignados = ref([0]);\r\n const documentosPorEntidades = ref({});\r\n const entidadesConAcento = ref([\r\n { nombre: \"CONYUGE\", texto: \"Cónyuge\" },\r\n { nombre: \"CLIENTE_INMUEBLE_GARANTIA\", texto: \"Cliente inmueble garantÃa\" },\r\n { nombre: \"CLIENTE_PERSONA_MORAL\", texto: \"Cliente persona moral\" },\r\n { nombre: \"CONYUGE_VENDEDOR\", texto: \"Cónyugue vendedor\" },\r\n { nombre: \"CLIENTE\", texto: \"Cliente\" },\r\n { nombre: \"VENDEDOR_INMUEBLE_GARANTIA\", texto: \"Vendedor inmueble garantÃa\" },\r\n { nombre: \"OBLIGADO_SOLIDARIO\", texto: \"Obligado Solidario\" },\r\n { nombre: \"COTITULAR\", texto: \"Cotitular\" },\r\n { nombre: \"GARANTE_HIPOTECARIO\", texto: \"Garante hipotecario\" },\r\n { nombre: \"CONYUGE_GARANTE_HIPOTECARIO\", texto: \"Cónyugue garante hipotecario\" },\r\n { nombre: \"VENDEDOR\", texto: \"Vendedor\" },\r\n { nombre: \"CLIENTE_PERSONA_MORAL_APODERADO\", texto: \"Cliente personal moral apoderado\" },\r\n { nombre: \"CLIENTE_PERSONA_MORAL_REPRESENTANTE_LEGAL\", texto: \"Cliente persona moral representante legal\" },\r\n { nombre: \"VENDEDOR_PERSONA_MORAL\", texto: \"Vendedor personal moral\" },\r\n { nombre: \"VENDEDOR_PERSONA_MORAL_REPRESENTANTE_LEGAL\", texto: \"Vendedor persona moral representante legal\" },\r\n { nombre: \"COTITULAR_CONYUGE\", texto: \"Cotitular cónyugue\" }\r\n ]);\r\n const categoriasConAcento = ref([\r\n { nombre: \"COMPROBANTE_DE_IDENTFICACION_PERSONA_FISICA\", texto: \"Comprobante de indentificación persona fÃsica\" },\r\n { nombre: \"DOCUMENTOS_GENERALES_DE_PERSONA_FISICA\", texto: \"Documentos generales de persona fÃsica\" },\r\n { nombre: \"DOCUMENTOS_DEL_INMUEBLE\", texto: \"Documentos del inmueble\" },\r\n { nombre: \"COMPROBANTE_DE_INGRESOS\", texto: \"Comprobante de ingresos\" },\r\n { nombre: \"BURO_DE_CREDITO\", texto: \"Buró de crédito\" },\r\n { nombre: \"FORMATO_INTERNO\", texto: \"Formato interno\" },\r\n { nombre: \"COMPROBANTE_DE_PAGO\", texto: \"Comprobante de pago\" },\r\n { nombre: \"DOCUMENTOS_GENERALES_DE_PERSONA_MORAL\", texto: \"Documentos generales de persona moral\" },\r\n { nombre: \"OTROS\", texto: \"Otros\" }\r\n ]);\r\n const estudioSocioeconomicoId = ref(\"\");\r\n const documentoAcargar = ref(\"\");\r\n const categoriaAcargar = ref(\"\");\r\n const comentarioAcargar = ref(\"\");\r\n const entidadAcargar = ref(\"\");\r\n const cargandoDocumento = ref(false);\r\n const jsonCargado = ref(false);\r\n const storeDocumentos = useStoreDocumentos();\r\n const storeTitular = useStoreTitular();\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n //METODOS\r\n\r\n const parametrosAcargar = (docuID, categoria, entidad, comentario) => {\r\n documentoAcargar.value = docuID;\r\n categoriaAcargar.value = categoria;\r\n entidadAcargar.value = entidad;\r\n comentarioAcargar.value = comentario;\r\n };\r\n\r\n const observarDocumentoTitular = async (entidad, docID, categoria) => {\r\n const target = document.getElementsByClassName(`spinner-${docID}`);\r\n target[0].classList.toggle(\"spinner-hide\");\r\n target[1].classList.toggle(\"spinner-show\");\r\n\r\n const documento = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerDocumento(\r\n storeTitular.estudioSocioeconomicoId,\r\n storeTitular.figuraActual,\r\n entidad,\r\n docID,\r\n categoria\r\n );\r\n\r\n const url = URL.createObjectURL(documento.data);\r\n window.open(url);\r\n URL.revokeObjectURL(url);\r\n target[0].classList.toggle(\"spinner-hide\");\r\n target[1].classList.toggle(\"spinner-show\");\r\n };\r\n\r\n const cerrarModal = () => {\r\n const miModal = document.getElementById(`${componentId.value}modalChecklist`);\r\n const modal = bootstrap.Modal.getInstance(miModal);\r\n modal.hide();\r\n };\r\n\r\n const guardarDocumento = async (docID, categoria, entidad) => {\r\n const documento = document.getElementById(`${componentId.value}archivoUsuario`).files;\r\n if (\r\n (documento[0].type == \"application/pdf\" ||\r\n documento[0].type == \"image/jpeg\" ||\r\n documento[0].type == \"application/zip\" ||\r\n documento[0].type == \"zip\" ||\r\n documento[0].type == \"application/x-zip\" ||\r\n documento[0].type == \"application/x-zip-compressed\" ||\r\n documento[0].type == \"image/png\") &&\r\n documento[0].size <= 100000000\r\n ) {\r\n cargandoDocumento.value = storeDocumentos.cargando;\r\n await storeDocumentos.cargarDocumento(\r\n documento[0],\r\n docID,\r\n storeTitular.figuraActual,\r\n storeTitular.estudioSocioeconomicoId,\r\n categoria,\r\n entidad\r\n );\r\n\r\n cerrarModal();\r\n document.getElementById(`${componentId.value}archivoUsuario`).value = \"\";\r\n cargandoDocumento.value = storeDocumentos.cargando;\r\n iniciarChecklist();\r\n } else {\r\n cargandoDocumento.value = storeDocumentos.cargando;\r\n cerrarModal();\r\n useStore().agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"El archivo no es compatible.\"\r\n });\r\n }\r\n };\r\n\r\n const iniciarChecklist = async () => {\r\n await funcionConsumirJSON(storeTitular.estudioSocioeconomicoId);\r\n };\r\n\r\n const funcionConsumirJSON = async estudioSocioeconomicoId => {\r\n let data;\r\n if (storeTitular.figuraActual == 0) {\r\n await storeDocumentos.consumirDocumentos();\r\n data = storeDocumentos.datos;\r\n } else {\r\n const objFiguras = await api.Cliente.Cliente.EstudioSocioEconomicoApi.ObtenerDocumentosFigura(\r\n estudioSocioeconomicoId,\r\n storeTitular.figuraActual\r\n );\r\n data = objFiguras.data;\r\n }\r\n\r\n jsonCargado.value = true;\r\n colocarContador(data);\r\n };\r\n\r\n const colocarContador = data => {\r\n documentosPorEntidades.value = data;\r\n documentosAceptados.value = [0];\r\n documentosRechazados.value = [0];\r\n documentosAsignados.value = [0];\r\n let indexGuardado = 0;\r\n let sumaObjetos = 0;\r\n let guardados = 0;\r\n let pendientes = 0;\r\n let opcionales = 0;\r\n let asignados = 0;\r\n let indexCounter = 0;\r\n documentosPorEntidades.value.forEach((entidad, index) => {\r\n if (indexGuardado == index) {\r\n entidad.documentosPorCategoria.forEach(categoria => {\r\n sumaObjetos = sumaObjetos + categoria.documentos.length;\r\n categoria.documentos.forEach(element => {\r\n if (indexCounter == index) {\r\n if (element.estatus == 1) {\r\n guardados = guardados + 1;\r\n documentosAceptados.value[indexCounter] = guardados;\r\n } else if (element.estatus == 2) {\r\n pendientes = pendientes + 1;\r\n documentosRechazados.value[indexCounter] = pendientes;\r\n } else if (element.estatus == 3) {\r\n opcionales = opcionales + 1;\r\n documentosOpcionales.value[indexCounter] = opcionales;\r\n } else if (element.estatus == 4) {\r\n asignados = asignados + 1;\r\n documentosAsignados.value[indexCounter] = asignados;\r\n }\r\n }\r\n });\r\n });\r\n\r\n documentosTotales.value[index] = sumaObjetos;\r\n sumaObjetos = 0;\r\n indexCounter = indexCounter + 1;\r\n guardados = 0;\r\n pendientes = 0;\r\n opcionales = 0;\r\n asignados = 0;\r\n } else {\r\n jsonCargado.value = false;\r\n entidad.documentosPorCategoria.forEach(categoria => {\r\n sumaObjetos = sumaObjetos + categoria.documentos.length;\r\n });\r\n indexGuardado = index;\r\n }\r\n indexGuardado = indexGuardado + 1;\r\n });\r\n };\r\n\r\n iniciarChecklist();\r\n\r\n watch(route, () => {\r\n documentosAceptados.value = [0];\r\n documentosRechazados.value = [0];\r\n documentosAsignados.value = [0];\r\n iniciarChecklist();\r\n });\r\n\r\n return {\r\n componentId,\r\n guardarDocumento,\r\n observarDocumentoTitular,\r\n funcionConsumirJSON,\r\n iniciarChecklist,\r\n colocarContador,\r\n misDatos,\r\n figuraObtenida,\r\n documentosTotales,\r\n documentosAceptados,\r\n documentosRechazados,\r\n documentosOpcionales,\r\n documentosAsignados,\r\n estudioSocioeconomicoId,\r\n documentosPorEntidades,\r\n entidadesConAcento,\r\n categoriasConAcento,\r\n parametrosAcargar,\r\n documentoAcargar,\r\n categoriaAcargar,\r\n entidadAcargar,\r\n cerrarModal,\r\n cargandoDocumento,\r\n jsonCargado,\r\n storeDocumentos,\r\n comentarioAcargar,\r\n storeTitular,\r\n route,\r\n router,\r\n estudioSocioeconomicoId,\r\n documentosPorEntidades,\r\n entidadesConAcento,\r\n categoriasConAcento,\r\n parametrosAcargar,\r\n documentoAcargar,\r\n categoriaAcargar,\r\n entidadAcargar,\r\n cerrarModal,\r\n cargandoDocumento,\r\n jsonCargado,\r\n storeDocumentos,\r\n comentarioAcargar,\r\n storeTitular,\r\n route,\r\n router\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\ninput[type=\"file\"] {\r\n width: 100%;\r\n}\r\n\r\na,\r\nbutton {\r\n text-decoration: none;\r\n}\r\n.rojo {\r\n color: #f42222 !important;\r\n border: 2px solid #f42222;\r\n background: #fddede;\r\n font-size: 12px;\r\n font-weight: 600;\r\n font-size: 12px;\r\n font-weight: 600;\r\n}\r\n.verde {\r\n color: #7cc465 !important;\r\n border: 2px solid #7cc465;\r\n background: #ebf6e8;\r\n font-size: 12px;\r\n font-weight: 600;\r\n font-size: 12px;\r\n font-weight: 600;\r\n}\r\n\r\n.azul {\r\n color: blue !important;\r\n}\r\n.amarillo {\r\n color: yellow !important;\r\n}\r\n\r\n.fa-angle-right,\r\n.fa-angle-down {\r\n font-size: 1.5rem;\r\n}\r\n.grey {\r\n background: #eceff2 !important;\r\n height: 28px;\r\n width: 46px;\r\n}\r\nbutton.accordion-button {\r\n font-weight: 500;\r\n}\r\n.accordion-button::after {\r\n background-image: none !important;\r\n}\r\n.inner-options a {\r\n transition: all 0.3s ease;\r\n}\r\n/* .inner-options a:hover {\r\n transform: scale(1.1);\r\n} */\r\n.center {\r\n width: 25%;\r\n}\r\n.right {\r\n width: 25%;\r\n}\r\n.left {\r\n width: 50%;\r\n}\r\n\r\n#comentarioChecklist {\r\n font-size: 12px;\r\n}\r\n\r\n.spinner-hide {\r\n display: none;\r\n}\r\n\r\n.spinner-show {\r\n display: block;\r\n}\r\n\r\n.contadores {\r\n font-size: 13px;\r\n}\r\n\r\n.accordion-item {\r\n border: 1px solid #a1b5d8;\r\n}\r\n.accordion-item {\r\n outline: none !important;\r\n box-shadow: none !important;\r\n}\r\nbutton.accordion-button {\r\n border: none !important;\r\n box-shadow: none !important;\r\n background-color: none !important;\r\n}\r\n\r\n.accordion-button:not(.collapsed) {\r\n background-color: inherit !important;\r\n}\r\np.font-weight-bold.text-secondary.mb-0.d-flex.align-items-center {\r\n width: 50%;\r\n}\r\n\r\na.router-link-exact-active {\r\n color: #ffa000;\r\n font-weight: bold;\r\n}\r\n</style>\r\n","<template lang=\"pug\">\r\n.d-flex.flex-column.p-3.w-100\r\n .container.d-flex.justify-content-between\r\n .col-8.g-0.justify-content-start\r\n p#titulo.fs-4.text-secondary.fs-4 Checklist de Documentos\r\n p#subtitulo.font-weight-bold.text-primary {{ figura == \"titular\" ? 'Titular' : figura == \"CoTitular\" ? 'Cotitular' : figura == \"GaranteHipotecario\" ? \"Garante Hipotecario\" : figura == \"ObligadoSolidario\" ? \"Obligado Solidario\" : \"\" }}\r\n <ChecklistCollapse />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport ChecklistCollapse from \"../../components/ChecklistCollapse.vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { ref, watch } from \"vue\";\r\n\r\nexport default {\r\n components: { ChecklistCollapse },\r\n props: [],\r\n setup() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n const figura = ref(route.params.figura);\r\n\r\n watch(route, () => {\r\n figura.value = route.params.figura;\r\n });\r\n return { route, router, figura };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#titulo,\r\n#subtitulo {\r\n font-weight: 700;\r\n}\r\n</style>\r\n","import type VueRouter from \"vue-router\";\r\nimport AppAreaCliente from \"../views/App.vue\";\r\nimport EstudioSocioeconomico from \"../views/EstudioSocioeconomico.vue\";\r\nimport ObligadoSolidario from \"../views/ObligadoSolidario.vue\";\r\nimport Perfil from \"../views/CCPerfil.vue\";\r\nimport Login from \"../views/CCLogin.vue\";\r\nimport SeguroVida from \"../views/SeguroVida.vue\";\r\nimport Crear from \"../views/CrearUsuario.vue\";\r\nimport Recuperacion from \"../views/CCRecuperacion.vue\";\r\nimport RecuperacionCorreo from \"../views/RecuperacionCorreo.vue\";\r\nimport CCHome from \"../views/CCHome.vue\";\r\nimport CCFinanciamiento from \"../views/CCFinanciamiento.vue\";\r\nimport Adjudicaciones from \"../views/CCAdjudicaciones.vue\";\r\nimport Escrituracion from \"../views/CCEscrituracion.vue\";\r\nimport MaterialesApoyo from \"../views/MaterialesApoyo.vue\";\r\nimport AppOffline from \"../views/AppOffline.vue\";\r\nimport api from \"@/servicios/apiCliente\";\r\nimport ProgramaRecicla from \"../views/ProgramaReclica.vue\";\r\nimport Adjudiacion from \"../views/MAAdjudicacion.vue\";\r\nimport Liquidacion from \"../views/MALiquidacion.vue\";\r\nimport Titulacion from \"../views/MATitulacion.vue\";\r\nimport Seguros from \"../views/MASeguros.vue\";\r\nimport Bienvenida from \"../views/MABienvenida.vue\";\r\nimport Tramites from \"../views/MATramites.vue\";\r\nimport Liberacion from \"../views/MALiberacion.vue\";\r\nimport Preventa from \"../views/MAPreventas.vue\";\r\nimport Pagos from \"../views/MAPagos.vue\";\r\nimport SeguroDanios from \"../views/SeguroDanios.vue\";\r\nimport Siniestro from \"../views/CCSiniestro.vue\";\r\nimport Facturacion from \"../views/CCFacturacion.vue\";\r\nimport Domiciliacion from \"../views/CCDomiciliacion.vue\";\r\nimport ReporteSeguroVida from \"../views/ReporteSeguroVida.vue\";\r\nimport Guia from \"../views/CCGuia.vue\";\r\nimport Venta from \"../views/MAVenta.vue\";\r\nimport { useStore } from \"../store\";\r\nimport EstudioSocioeconomico2 from \"../views/EstudioSocioeconomico/EstudioSocioeconomico2.vue\";\r\nimport DatosGenerales from \"../components/DatosGenerales.vue\";\r\nimport Ingresos from \"../components/Ingresos.vue\";\r\nimport Gastos from \"../components/Gastos.vue\";\r\nimport Vendedor from \"../components/Vendedor.vue\";\r\nimport Patrimonio from \"../components/Patrimonio.vue\";\r\nimport ObservacionesGenerales from \"../components/ObservacionesGenerales.vue\";\r\nimport UsoFinanciamiento from \"../components/UsoFinanciamiento.vue\";\r\nimport FormularioLayout from \"../layout/FormularioLayout.vue\";\r\nimport ChecklistDocumentos from \"../views/EstudioSocioeconomico/ChecklistDocumentos.vue\";\r\nimport AnalisisAes from \"../components/AnalisisAes.vue\";\r\nimport FirmaAes from \"../components/FirmaAes.vue\";\r\n\r\nexport default () => {\r\n const urlExperiencia = 'https://experiencia.hircasa.com.mx/';\r\n const store = useStore();\r\n\r\n const guard = async (_to: any, _from: any, next: any) => {\r\n const res = (await api.Cliente.Cliente.HomeApi.Ping()).data;\r\n if (res != null) {\r\n store.sesionIniciada = true;\r\n store.clienteAceptaTerminosCondicionesAvisoPrivacidad = res.aceptaTerminosCondicionesAvisoPrivacidad ?? false;\r\n next();\r\n } else {\r\n next({ name: \"cliente-cliente-login\" });\r\n }\r\n };\r\n\r\n // Se extenderá\r\n const rutas: VueRouter.RouteRecordRaw[] = [\r\n {\r\n path: \"\",\r\n component: AppAreaCliente,\r\n children: [\r\n {\r\n path: \"siniestro\",\r\n component: Siniestro,\r\n name: \"cliente-cliente-siniestro\"\r\n },\r\n {\r\n // Se puede acceder sin sesión\r\n path: \"estudio-socioeconomico-old\",\r\n component: EstudioSocioeconomico\r\n },\r\n {\r\n // Se puede acceder sin sesión\r\n path: \"figura-apoyo\",\r\n component: ObligadoSolidario\r\n },\r\n {\r\n // Se puede acceder sin sesión\r\n path: \"escrituracion\",\r\n component: Escrituracion,\r\n name: \"cliente-cliente-escrituracion\"\r\n },\r\n {\r\n path: \"siniestro-generales\",\r\n component: Siniestro,\r\n name: \"cliente-cliente-siniestro-generales\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-adjudicacion\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-adjudicacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'adjudicacion-2/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-adjudicacion-flex\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-adjudicacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'adjudicacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-avaluos\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-avaluos\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'avaluos/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-avaluos-flex\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-avaluos-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'avaluos-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-remanentes\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-remanentes\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'remanentes-de-monto-adjudicado/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-remanentes-flex\",\r\n component: Adjudiacion,\r\n name: \"cliente-cliente-material-apoyo-remanentes-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'remanentes-de-monto-adjudicado-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-bienvenida\",\r\n component: Bienvenida,\r\n name: \"cliente-cliente-material-apoyo-bienvenida\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'bienvenida-bienvenido/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-bienvenida-flex\",\r\n component: Bienvenida,\r\n name: \"cliente-cliente-material-apoyo-bienvenida-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'bienvenida-bienvenido-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-factor-actualizacion\",\r\n component: Bienvenida,\r\n name: \"cliente-cliente-material-apoyo-factor-actualizacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'factor-de-actualizacion/ ')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-factor-actualizacion-flex\",\r\n component: Bienvenida,\r\n name: \"cliente-cliente-material-apoyo-factor-actualizacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'factor-de-actualizacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-bienvenida-portal\",\r\n component: Bienvenida,\r\n name: \"cliente-cliente-material-apoyo-bienvenida-portal\"\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-tramites\",\r\n component: Tramites,\r\n name: \"cliente-cliente-material-apoyo-tramites\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'tramites/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-tramites-flex\",\r\n component: Tramites,\r\n name: \"cliente-cliente-material-apoyo-tramites-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'tramites-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-aclaraciones\",\r\n component: Tramites,\r\n name: \"cliente-cliente-material-apoyo-aclaraciones\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'aclaraciones/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-aclaraciones-flex\",\r\n component: Tramites,\r\n name: \"cliente-cliente-material-apoyo-aclaraciones-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'aclaraciones-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-liberacion\",\r\n component: Liberacion,\r\n name: \"cliente-cliente-material-apoyo-liberacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'liberacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-liberacion-flex\",\r\n component: Liberacion,\r\n name: \"cliente-cliente-material-apoyo-liberacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'liberacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-preventas\",\r\n component: Preventa,\r\n name: \"cliente-cliente-material-apoyo-preventas\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'preventa/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-preventas-flex\",\r\n component: Preventa,\r\n name: \"cliente-cliente-material-apoyo-preventas-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'preventa-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-pagos\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-pagos\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'pagos-2/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-pagos-flex\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-pagos-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'pagos-flex/ ')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-descuentos\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-descuentos\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'descuentos/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-descuentos-flex\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-descuentos-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'descuentos-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-domiciliacion\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-domiciliacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'domiciliacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-domiciliacion-flex\",\r\n component: Pagos,\r\n name: \"cliente-cliente-material-apoyo-domiciliacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'domiciliacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-Liquidacion\",\r\n component: Liquidacion,\r\n name: \"cliente-cliente-material-apoyo-liquidacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'liquidacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-Liquidacion-flex\",\r\n component: Liquidacion,\r\n name: \"cliente-cliente-material-apoyo-liquidacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'liquidacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-titulacion\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-titulacion\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'titulacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-titulacion-flex\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-titulacion-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'titulacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-guia\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-guia\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'guia-de-adjudicacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-guia-flex\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-guia-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'guiaadjudicacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-avaluo\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-avaluo\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'bienvenida-bienvenido-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-avaluo-flex\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-avaluo-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'bienvenida-bienvenido-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-firma\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-firma\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'firma-de-escritura/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-firma-flex\",\r\n component: Titulacion,\r\n name: \"cliente-cliente-material-apoyo-firma-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'firma-de-escritura-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-seguros\",\r\n component: Seguros,\r\n name: \"cliente-cliente-material-apoyo-seguros\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'seguros/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-seguros-flex\",\r\n component: Seguros,\r\n name: \"cliente-cliente-material-apoyo-seguros-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'seguros-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-contacto\",\r\n component: Seguros,\r\n name: \"cliente-cliente-material-apoyo-contacto\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'medios-de-contacto/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"material-apoyo-contacto-flex\",\r\n component: Seguros,\r\n name: \"cliente-cliente-material-apoyo-contacto-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'medios-de-contacto-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde Vista Materia de Apoyo\r\n path: \"material-apoyo-venta\",\r\n component: Venta,\r\n name: \"cliente-cliente-material-apoyo-venta\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'tips-para-tu-vendedor/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"material-apoyo-venta-flex\",\r\n component: Venta,\r\n name: \"cliente-cliente-material-apoyo-venta-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'tips-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Se puede acceder desde el modal\r\n path: \"programa-recicla\",\r\n component: ProgramaRecicla,\r\n name: \"cliente-cliente-programa-recicla\",\r\n beforeEnter: guard\r\n },\r\n {\r\n path: \"financiamiento\",\r\n component: CCFinanciamiento,\r\n name: \"cliente-cliente-financiamiento\",\r\n beforeEnter: guard\r\n },\r\n {\r\n path: \"perfil\",\r\n component: Perfil,\r\n name: \"cliente-cliente-perfil\",\r\n beforeEnter: guard\r\n },\r\n {\r\n path: \"login\",\r\n component: Login,\r\n name: \"cliente-cliente-login\"\r\n },\r\n {\r\n path: \"usuario/crear\",\r\n component: Crear,\r\n name: \"cliente-cliente-usuario-crear\"\r\n },\r\n {\r\n path: \"usuario/recuperacion\",\r\n component: Recuperacion,\r\n name: \"cliente-cliente-usuario-recuperacion\"\r\n },\r\n {\r\n path: \"usuario/recuperacion-correo\",\r\n component: RecuperacionCorreo,\r\n name: \"cliente-cliente-usuario-recuperacion-2\"\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"home\",\r\n component: CCHome,\r\n name: \"cliente-cliente-home\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"adjudicaciones\",\r\n component: Adjudicaciones,\r\n name: \"cliente-cliente-adjudicaciones\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"estudio-socioeconomico\",\r\n component: EstudioSocioeconomico2,\r\n name: \"cliente-cliente-aes\",\r\n redirect: \"estudio-socioeconomico/titular/0/datos-generales\",\r\n\r\n children: [\r\n {\r\n path: \":figura/:numero\",\r\n component: FormularioLayout,\r\n name: \"figura-layout\",\r\n props: true,\r\n children: [\r\n {\r\n path: \"contenido-checklist\",\r\n component: ChecklistDocumentos,\r\n name: \"contenido-checklist\",\r\n props: true\r\n },\r\n {\r\n path: \"datos-generales\",\r\n component: DatosGenerales,\r\n name: \"datos-generales\",\r\n props: true\r\n },\r\n {\r\n path: \"analisis-aes\",\r\n component: AnalisisAes,\r\n name: \"analisis-aes\",\r\n props: true\r\n },\r\n {\r\n path: \"firma-aes\",\r\n component: FirmaAes,\r\n name: \"firma-aes\",\r\n props: true\r\n },\r\n {\r\n path: \"ingresos\",\r\n component: Ingresos,\r\n name: \"ingresos\",\r\n props: true\r\n },\r\n {\r\n path: \"gastos\",\r\n component: Gastos,\r\n name: \"gastos\",\r\n props: true\r\n },\r\n {\r\n path: \"patrimonio\",\r\n component: Patrimonio,\r\n name: \"patrimonio\",\r\n props: true\r\n },\r\n {\r\n path: \"vendedor\",\r\n component: Vendedor,\r\n name: \"vendedor\",\r\n props: true\r\n },\r\n\r\n {\r\n path: \"observaciones\",\r\n component: ObservacionesGenerales,\r\n name: \"observaciones\",\r\n props: true\r\n },\r\n {\r\n path: \"uso-financiamiento\",\r\n component: UsoFinanciamiento,\r\n name: \"uso-financiamiento\",\r\n props: true\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"material-apoyo\",\r\n component: MaterialesApoyo,\r\n name: \"cliente-cliente-materiales-apoyo\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // cceso sin sesion\r\n path: \"material-apoyo-portal\",\r\n component: MaterialesApoyo,\r\n name: \"cliente-cliente-materiales-apoyo-portal\"\r\n },\r\n {\r\n // Acceso sin sesion\r\n path: \"reporte-seguro-vida\",\r\n component: ReporteSeguroVida,\r\n name: \"cliente-cliente-reporte-seguro-vida\"\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"guia\",\r\n component: Guia,\r\n name: \"cliente-cliente-material-apoyo-guia\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'guia-de-adjudicacion/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Acceso sin Sesion\r\n path: \"guia-flex\",\r\n component: Guia,\r\n name: \"cliente-cliente-material-apoyo-guia-flex\",\r\n beforeEnter: (to, from, next) => {\r\n window.open( urlExperiencia + 'guiaadjudicacion-flex/')\r\n next(false)\r\n }\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"seguro-vida\",\r\n component: SeguroVida,\r\n name: \"cliente-cliente-seguro-vida\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"seguro-danios\",\r\n component: SeguroDanios,\r\n name: \"cliente-cliente-seguro-danios\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"facturacion\",\r\n component: Facturacion,\r\n name: \"cliente-cliente-facturacion\",\r\n beforeEnter: guard\r\n },\r\n {\r\n // Solo con Sesion\r\n path: \"domiciliacion\",\r\n component: Domiciliacion,\r\n name: \"cliente-cliente-domiciliacion\",\r\n beforeEnter: guard\r\n },\r\n {\r\n path: \"app-offline\",\r\n component: AppOffline,\r\n name: \"app-offline\"\r\n },\r\n {\r\n path: \"\",\r\n redirect: \"home\"\r\n },\r\n {\r\n path: \":pathMatch(.*)*\",\r\n redirect: \"home\"\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n return rutas;\r\n};\r\n\r\n","<template lang=\"pug\">\r\nrouter-view\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nexport default defineComponent({});\r\n</script>\r\n","import * as VueRouter from \"vue-router\";\r\nimport RutasAreaCliente from \"../Areas/Cliente/router/index\";\r\nimport RouterViewGenerico from \"@/views/RouterViewGenerico.vue\";\r\n\r\nexport default () => {\r\n return [\r\n {\r\n path: \"\",\r\n component: RouterViewGenerico,\r\n children: RutasAreaCliente()\r\n }\r\n ] as VueRouter.RouteRecordRaw[];\r\n};\r\n","import * as VueRouter from \"vue-router\";\r\nimport ClienteAplicacion from \"@/Aplicaciones/Cliente/router/index\";\r\nimport RouterViewGenerico from \"@/views/RouterViewGenerico.vue\";\r\n\r\nexport let instancia: VueRouter.Router = null!;\r\n\r\nexport default () => {\r\n const routes: VueRouter.RouteRecordRaw[] = [\r\n {\r\n path: \"/\",\r\n name: \"Home\",\r\n component: RouterViewGenerico,\r\n children: ClienteAplicacion()\r\n }\r\n ];\r\n\r\n const router = VueRouter.createRouter({\r\n history: VueRouter.createWebHistory(import.meta.env.BASE_URL),\r\n routes,\r\n scrollBehavior(to, from, savedPosition) {\r\n return { top: 0, behavior: \"smooth\" };\r\n }\r\n });\r\n\r\n router.onError(err => {\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(err);\r\n });\r\n\r\n // Ver: https://developers.google.com/tag-platform/gtagjs/reference?hl=es\r\n\r\n router.afterEach((to, from, failure) => {\r\n if (!VueRouter.isNavigationFailure(failure)) {\r\n gtag(\"event\", \"page_view\", {\r\n page_location: window.location.toString(),\r\n user_agent: navigator.userAgent,\r\n page_title: to.name\r\n });\r\n }\r\n });\r\n instancia = router;\r\n return router;\r\n};\r\n","<template>\r\n <div>\r\n <router-view />\r\n <hir-toast />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\n// eslint-disable-next-line\r\nexport default defineComponent({});\r\n</script>\r\n","/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '<li role=\"alert\" aria-live=\"assertive\"' +\n ' class=\"select2-results__option\"></li>'\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '<span class=\"select2-selection\" role=\"combobox\" ' +\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n '</span>'\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '<span class=\"select2-selection__rendered\"></span>' +\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n '<b role=\"presentation\"></b>' +\n '</span>'\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n '<ul class=\"select2-selection__rendered\"></ul>'\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '<li class=\"select2-selection__choice\">' +\n '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n 'tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>' +\n '<span class=\"select2-selection__choice__display\"></span>' +\n '</li>'\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>'\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '<span class=\"select2-search select2-search--inline\">' +\n '<textarea class=\"select2-search__field\"'+\n ' type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n '</textarea>' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '<span class=\"select2-dropdown\">' +\n '<span class=\"select2-results\"></span>' +\n '</span>'\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '<span class=\"select2-search select2-search--dropdown\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '<li ' +\n 'class=\"select2-results__option select2-results__option--load-more\"' +\n 'role=\"option\" aria-disabled=\"true\"></li>'\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '<span class=\"select2 select2-container\">' +\n '<span class=\"selection\"></span>' +\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n '</span>'\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","<template lang=\"pug\">\r\nselect.w-100(ref=\"select2\")\r\n option(v-if=\"etiqueta\" :selected=\"modelValue === undefined\" value=\"\" disabled) {{ etiqueta }}\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport \"@/sass/select2.scss\";\r\nimport $ from \"jquery\";\r\nimport S2 from \"select2\";\r\nimport { defineComponent } from \"vue\";\r\nimport type { PropType } from \"vue\";\r\nimport type { DataFormat } from \"select2\";\r\n\r\n(S2 as any)(window, $);\r\n\r\n/**\r\n * Soporta los mismos parámetros de configuración que Select2, los tipos válidos para el v-model son Number y string\r\n * Soporta una lista de opciones que cambie externamente desde el componente.\r\n */\r\nexport default defineComponent({\r\n props: {\r\n etiqueta: { type: String, default: \"Seleccionar una opción...\" },\r\n modelValue: { type: [Number, String, Object] as PropType<number | string | Object>, default: undefined },\r\n data: { type: Array as () => DataFormat[], default: () => [] }\r\n },\r\n emits: [\"update:modelValue\"],\r\n watch: {\r\n modelValue(value) {\r\n let select = this.$el as HTMLSelectElement;\r\n $(select).val(value).trigger(\"change\");\r\n },\r\n data(value) {\r\n $(this.$el)\r\n .empty()\r\n .select2({ data: value, width: \"100%\" })\r\n .val(this.modelValue as any)\r\n .trigger(\"change\");\r\n }\r\n },\r\n async mounted() {\r\n var vm = this;\r\n let select = this.$el as HTMLSelectElement;\r\n await this.$nextTick();\r\n $(select)\r\n .select2({ data: this.data, width: \"100%\" })\r\n .val(this.modelValue as any)\r\n .trigger(\"change\")\r\n // emit event on change.\r\n .on(\"change\", function () {\r\n if (!isNaN(vm.modelValue as any)) vm.$emit(\"update:modelValue\", Number(this.value));\r\n else vm.$emit(\"update:modelValue\", this.value);\r\n });\r\n },\r\n beforeUnmount() {\r\n let select = this.$el as HTMLSelectElement;\r\n $(select).off().select2(\"destroy\");\r\n }\r\n});\r\n</script>\r\n","<template lang=\"pug\">\r\ndiv\r\n mixin toast(propiedad)\r\n .toast.hide.fade(\r\n v-for=`(t, i) in toasts` + propiedad\r\n :key=\"t.id\"\r\n :class=\"obtenerClaseBG(t) + ' ' + obtenerClaseText(t)\"\r\n :ref=\"'toast_' + t.id.toString().substring(2)\"\r\n ): .d-flex\r\n .toast-body(v-html=\"t.body\" style=\"max-width: calc(100% - 26px); max-height: calc(100vh - 173px); overflow: hidden\")\r\n a.me-2.m-auto(href=\"#\" data-bs-dismiss=\"toast\" title=\"Cerrar\"): em.fas.fa-times.text-white\r\n .top-0.end-0.position-fixed.toast-container.p-3\r\n +toast(\"TR\")\r\n .position-fixed.toast-container.p-3.top-50.start-50.translate-middle\r\n +toast(\"MD\")\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from \"vue\";\r\nimport { TipoBootstrap } from \"@/interfaces\";\r\nimport { EstadoRespuesta } from \"@/servicios/api\";\r\nimport { useStore } from \"@/store\";\r\nimport { mapStores } from \"pinia\";\r\nimport type { Toast } from \"@/store\";\r\nimport * as bootstrap from \"bootstrap\";\r\n\r\ninterface HTMLToast extends Toast {\r\n evento: boolean;\r\n}\r\n\r\nconst dc = defineComponent({\r\n data() {\r\n return {\r\n toasts: [] as HTMLToast[]\r\n };\r\n },\r\n computed: {\r\n ...mapStores(useStore),\r\n preToasts(): Toast[] {\r\n return this.baseStore.toasts;\r\n },\r\n toastsTR(): HTMLToast[] {\r\n return this.toasts\r\n .filter(\r\n (t) =>\r\n [TipoBootstrap.PRIMARY, TipoBootstrap.SECONDARY, TipoBootstrap.SUCCESS, TipoBootstrap.INFO].includes(\r\n t.tipo as TipoBootstrap\r\n ) || [EstadoRespuesta.OK, EstadoRespuesta.INFO].includes(t.tipo as EstadoRespuesta)\r\n )\r\n .map((v) => {\r\n v.body = this.limpiarN(v.body);\r\n return v;\r\n });\r\n },\r\n toastsMD(): HTMLToast[] {\r\n return this.toasts\r\n .filter(\r\n (t) =>\r\n [TipoBootstrap.DANGER, TipoBootstrap.WARNING].includes(t.tipo as TipoBootstrap) ||\r\n [EstadoRespuesta.ERROR, EstadoRespuesta.ALERT, EstadoRespuesta.NO_AUTORIZADO].includes(\r\n t.tipo as EstadoRespuesta\r\n )\r\n )\r\n .map((v) => {\r\n v.body = this.limpiarN(v.body);\r\n return v;\r\n });\r\n }\r\n },\r\n watch: {\r\n preToasts: {\r\n deep: true,\r\n // Cada que se agrega un valor a los toasts:\r\n async handler(val: Toast[]) {\r\n if (!val) return;\r\n this.toasts = val.map((t) => t as HTMLToast);\r\n await this.$nextTick();\r\n for (let t of this.toasts.filter((a) => !a.evento)) {\r\n let el = (this.$refs[\"toast_\" + t.id!.toString().substring(2)] as HTMLElement[])[0];\r\n let t2 = new bootstrap.Toast(el, { delay: t.delay });\r\n t2.show();\r\n el.addEventListener(\r\n \"hidden.bs.toast\",\r\n () => {\r\n this.baseStore.removerToast(t.id!);\r\n },\r\n { once: true }\r\n );\r\n t.evento = true;\r\n }\r\n }\r\n }\r\n },\r\n methods: {\r\n obtenerClaseBG(toast: Toast) {\r\n if (toast.tipo == TipoBootstrap.PRIMARY) return \"bg-primary\";\r\n if (toast.tipo == TipoBootstrap.SECONDARY) return \"bg-secondary\";\r\n if (toast.tipo == TipoBootstrap.SUCCESS || toast.tipo == EstadoRespuesta.OK) return \"bg-success\";\r\n if (\r\n toast.tipo == TipoBootstrap.WARNING ||\r\n toast.tipo == EstadoRespuesta.ALERT ||\r\n toast.tipo == EstadoRespuesta.NO_AUTORIZADO\r\n )\r\n return \"bg-warning\";\r\n if (toast.tipo == TipoBootstrap.DANGER || toast.tipo == EstadoRespuesta.ERROR) return \"bg-danger\";\r\n if (toast.tipo == TipoBootstrap.INFO || toast.tipo == EstadoRespuesta.INFO) return \"bg-info\";\r\n },\r\n obtenerClaseText(toast: Toast) {\r\n if (this.obtenerClaseBG(toast) == \"bg-warning\") return \"\";\r\n return \"text-white\";\r\n },\r\n obtenerClaseBtn(toast: Toast) {\r\n if (this.obtenerClaseBG(toast) == \"bg-warning\") return \"\";\r\n return \"btn-close-white\";\r\n },\r\n limpiarN(s: string) {\r\n return s.replace(/\\r?\\n/g, \"<br>\");\r\n }\r\n }\r\n});\r\n\r\nexport default dc;\r\n</script>\r\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [448, 512, [], \"33\", \"M64 64c0-17.7 14.3-32 32-32H336c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L226.3 208H248c75.1 0 136 60.9 136 136s-60.9 136-136 136H169.4c-42.4 0-81.2-24-100.2-61.9l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H248c39.8 0 72-32.2 72-72s-32.2-72-72-72H144c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L253.7 96H96C78.3 96 64 81.7 64 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM64 320c0-53 43-96 96-96s96 43 96 96s-43 96-96 96s-96-43-96-96z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM384 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H160 32zm470.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M144 80c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M473 7c-9.4-9.4-24.6-9.4-33.9 0l-87 87L313 55c-6.9-6.9-17.2-8.9-26.2-5.2S272 62.3 272 72V216c0 13.3 10.7 24 24 24H440c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-39-39 87-87c9.4-9.4 9.4-24.6 0-33.9L473 7zM216 272H72c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39L7 439c-9.4 9.4-9.4 24.6 0 33.9l32 32c9.4 9.4 24.6 9.4 33.9 0l87-87 39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V296c0-13.3-10.7-24-24-24z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM492.7 300.7c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [640, 512, [], \"e4c2\", \"M64 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32C46.3 32 32 46.3 32 64s14.3 32 32 32zM41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 237.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L448 237.3 448 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480v32h32 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96C43 32 0 75 0 128V384c0 53 43 96 96 96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32h64zM504.5 273.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32H320v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [9883], \"f5d2\", \"M258.9 412.3c-16.7 33.8-31 35.7-34.9 35.7s-18.1-1.9-34.9-35.7c11.4-3.9 23.1-8.4 34.9-13.5c11.8 5.1 23.4 9.7 34.9 13.5zM252.8 312c-9.7 5.8-19.3 11.2-28.8 16c-9.4-4.8-19-10.2-28.8-16c-12.1-7.3-23.6-14.8-34.2-22.4c-.7-10.8-1-22-1-33.6s.4-22.7 1-33.6c10.6-7.6 22.1-15.1 34.2-22.4c9.7-5.8 19.3-11.2 28.8-16c9.4 4.8 19 10.2 28.8 16c12.1 7.3 23.6 14.8 34.2 22.4c.7 10.8 1 22 1 33.6s-.4 22.7-1 33.6c-10.6 7.6-22.1 15.1-34.2 22.4zm184.8 72c20.7-37.1 9.4-82.8-23.6-128c33-45.2 44.3-90.9 23.6-128c-20.2-36.3-62.5-49.3-115.2-43.2C300.4 32.7 266.8 0 224 0s-76.4 32.7-98.4 84.8c-52.7-6.1-95 6.8-115.2 43.2C-10.3 165.1 1 210.8 34 256C1 301.2-10.3 346.9 10.4 384c20.2 36.3 62.5 49.3 115.2 43.2c22 52.1 55.7 84.8 98.4 84.8s76.4-32.7 98.4-84.8c52.7 6.1 95-6.8 115.2-43.2zm-67.8-79.2c18.9 30.2 14.2 44 11.9 48.1c-1.6 2.9-8.4 13-40.2 11.7c2.8-13.1 5-26.9 6.7-41.2c7.6-6.1 14.8-12.3 21.6-18.6zm11.9-145.7c2.3 4.2 7 17.9-11.9 48.1c-6.8-6.3-14-12.5-21.6-18.6c-1.7-14.3-3.9-28-6.7-41.2c31.8-1.4 38.6 8.7 40.2 11.7zM224 64c3.9 0 18.1 1.9 34.9 35.7c-11.4 3.9-23.1 8.4-34.9 13.5c-11.8-5.1-23.4-9.7-34.9-13.5C205.9 65.9 220.1 64 224 64zM106.5 147.5c-2.8 13.1-5 26.9-6.7 41.2c-7.6 6.1-14.8 12.3-21.6 18.6C59.4 177 64 163.3 66.3 159.1c1.6-2.9 8.4-13 40.2-11.7zM66.3 352.9c-2.3-4.2-7-17.9 11.9-48.1c6.8 6.3 14 12.5 21.6 18.6c1.7 14.2 3.9 28 6.7 41.2c-31.8 1.4-38.6-8.7-40.2-11.7zM224 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM416 32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [576, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M532.3 7.3C539.7 13.3 544 22.4 544 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L384 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM106.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L245.3 304H272c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48h26.7zM224 408c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM510.7 278.3L472.3 368H528c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L423.7 400H368c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L51.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c69.3 0 130.6 33.8 168.5 86c7.8 10.7 22.8 13.1 33.5 5.3s13.1-22.8 5.3-33.5C416.8 41.7 341.3 0 256 0C114.6 0 0 114.6 0 256v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-18.1-1.9-35.8-5.5-52.9zM222.1 128.2c10.8-2.9 22.1-4.4 33.9-4.4c73 0 132.2 59.2 132.2 132.2c0 31.1-1.9 62.4-3.9 86c-1 11.8-2 21.6-2.7 28.4c-.4 3.4-.7 6.1-.9 7.9l-.2 2-.1 .5 0 .1 0 0 0 0c-1.6 13.2 7.7 25.1 20.8 26.8s25.1-7.7 26.8-20.8l-23.8-3c23.8 3 23.8 3 23.8 3l0 0 0 0 0 0 0-.2 .1-.6 .3-2.2c.2-1.9 .5-4.8 .9-8.3c.8-7.2 1.8-17.4 2.8-29.6c2-24.4 4.1-57.1 4.1-90c0-99.5-80.7-180.2-180.2-180.2c-15.9 0-31.4 2.1-46.2 6c-12.8 3.4-20.5 16.5-17.1 29.3s16.5 20.5 29.3 17.1zm-74.5 52.1c7.6-10.9 5-25.8-5.9-33.4s-25.8-5-33.4 5.9C87.9 182 75.8 217.6 75.8 256c0 30.1-3.8 58.6-7.6 79.7c-1.9 10.5-3.8 19.1-5.2 24.9c-.7 2.9-1.3 5.2-1.7 6.7c-.2 .7-.3 1.3-.4 1.6l-.1 .4 0 .1 0 0c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L83.8 376c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 0-.2 .2-.6c.1-.5 .3-1.2 .6-2.1c.5-1.8 1.2-4.4 1.9-7.7c1.6-6.6 3.7-16.1 5.8-27.6c4.2-22.9 8.4-54.4 8.4-88.3c0-28.2 8.8-54.3 23.8-75.7zM256 200c30.9 0 56 25.1 56 56c0 47.1-2.7 86.3-5.5 113.6c-1.4 13.7-2.7 24.3-3.7 31.6c-.5 3.6-.9 6.3-1.2 8.1c-.1 .9-.2 1.6-.3 2l-.1 .5 0 .1 0 0 0 0 0 0c-2.3 13.1 6.5 25.5 19.5 27.8s25.5-6.4 27.8-19.5L324.8 416c23.6 4.1 23.6 4.1 23.6 4.1l0 0 0 0 0-.1 0-.2 .1-.7c.1-.6 .2-1.4 .4-2.4c.3-2.1 .8-5.1 1.3-9c1.1-7.8 2.5-19.1 4-33.4c2.9-28.7 5.7-69.5 5.7-118.4c0-57.4-46.6-104-104-104s-104 46.6-104 104c0 46.7-3.9 83.4-7.7 108.4c-1.9 12.5-3.8 21.9-5.2 28.2c-.7 3.1-1.3 5.5-1.6 6.9c-.2 .7-.3 1.3-.4 1.6l-.1 .3c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L160 408c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 .1-.2 .2-.7c.1-.5 .3-1.3 .6-2.3c.5-2 1.2-4.8 2-8.4c1.6-7.2 3.7-17.8 5.8-31.3c3-19.2 5.9-44.6 7.3-75.3c.6-12.6 .9-26 .9-40.3c0-30.9 25.1-56 56-56zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 45.4-2.6 83.4-6.3 114.5L202 478.3l0 0c-5.3 12.1 .1 26.2 12.2 31.6c12.1 5.4 26.3-.1 31.7-12.2L224 488c21.9 9.7 21.9 9.7 21.9 9.7l0 0 0 0 0-.1 .1-.3 .4-.9c.3-.8 .7-1.8 1.2-3.1c1-2.7 2.4-6.5 4-11.5c3.3-10.1 7.5-24.9 11.7-44.7C271.8 397.3 280 337.6 280 256zM225.7 370.5s0 0 0 0L256 232 225.7 370.5zm0 0c-2.7 22.5-5.9 41.3-9.2 56.6c-3.8 18.2-7.6 31.3-10.3 39.8c-1.4 4.2-2.5 7.3-3.2 9.2c-.4 .9-.6 1.6-.8 2l-.1 .4 23.6-107.9z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-48 0c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [127937], \"f11e\", \"M32 0C46.3 0 58.4 9.4 62.5 22.3l.1 0-.1 .1 .1 .3 0-.4C89.8 11.5 128.1 0 168 0c38.8 0 74.6 9.1 105.7 17C306 25.2 332.9 32 360 32c26.8 0 52.9-6.8 73-14.1c9.9-3.6 17.9-7.2 23.4-9.8c2.7-1.3 4.8-2.4 6.2-3.1c.7-.4 1.1-.6 1.4-.8l.2-.1c9.9-5.6 22.1-5.6 31.9 .2S512 20.6 512 32V320c0 12.1-6.8 23.2-17.7 28.6L480 320c14.3 28.6 14.3 28.6 14.3 28.6l0 0 0 0-.1 0-.2 .1-.7 .4c-.6 .3-1.5 .7-2.5 1.2c-2.2 1-5.2 2.4-9 4c-7.7 3.3-18.5 7.6-31.5 11.9C424.5 374.9 388.8 384 352 384c-37 0-65.2-9.4-89-17.3l-1-.3c-24-8-43.7-14.4-70-14.4c-27.9 0-64.7 7.2-96.2 15c-12.1 3-23 6-31.8 8.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 72 32C0 14.3 14.3 0 32 0zM64 158.4c17.5-4.9 40.4-10.7 64-15.2V68.8c-15 3.3-29.3 8.1-42 13c-8.5 3.4-16 6.7-22 9.6v67zm0 80v70.8c5.1-1.4 10.6-2.8 16.2-4.2c14.3-3.6 30.8-7.3 47.8-10.4V223.1c21.9-4.2 44.4-7.1 64-7.1c5.6 0 10.9 .2 16 .7v71.9c29.5 2.2 53 10 73.3 16.8l.9 .3c2 .7 3.9 1.3 5.8 1.9v-69-1.4c19 5.9 39.1 10.8 64 10.8c5.3 0 10.7-.2 16-.6v71.9c22-2 43.9-7.6 61.9-13.6c6.8-2.3 12.9-4.6 18.1-6.6V229.2c-20.9 7.5-49.9 15.8-80 18.1v-80c30.1-2.3 59.1-10.6 80-18.1V80.5c-21.6 7.3-49.5 14.3-80 15.4v71.5c-5.3 .4-10.7 .6-16 .6c-24.9 0-45-4.9-64-10.8V86.5c-9.3-2.1-18.3-4.4-27-6.7l-3.1-.8c-17.4-4.4-33.8-8.5-49.9-11.3v69c-5.1-.4-10.4-.7-16-.7c-19.6 0-42.1 3-64 7.1v80c-23.6 4.5-46.5 10.3-64 15.2zM208 136.7v80c24.4 2.1 44.3 8.7 64.2 15.3l0 0c5.2 1.7 10.5 3.5 15.8 5.2v-80c-5.3-1.7-10.6-3.4-15.8-5.2l0 0c-19.9-6.6-39.8-13.2-64.2-15.3z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 240c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zM144 336c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm392-40c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM144 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 224H96c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H80c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8H96c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H80c-22.1 0-40-17.9-40-40V264c0-22.1 17.9-40 40-40zm72 46.4c0-25.6 20.8-46.4 46.4-46.4H216c8.8 0 16 7.2 16 16s-7.2 16-16 16H198.4c-7.9 0-14.4 6.4-14.4 14.4c0 5.2 2.8 9.9 7.2 12.5l25.4 14.5c14.4 8.3 23.4 23.6 23.4 40.3c0 25.6-20.8 46.4-46.4 46.4H168c-8.8 0-16-7.2-16-16s7.2-16 16-16h25.6c7.9 0 14.4-6.4 14.4-14.4c0-5.2-2.8-9.9-7.2-12.5l-25.4-14.5C160.9 302.4 152 287 152 270.4zM280 240v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V240c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 400c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM384 376c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm0 32c70.7 0 128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM403 336.5c5.1-11.8-6.9-22.4-19.2-18.7C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [512, 512, [], \"f55c\", \"M192 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H334.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H192V208.5zM320 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L398.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C406 314.1 416 347.9 416 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H108.1c-17.3 0-34.2-7.1-43.8-21.5C43.9 460.1 32 423.4 32 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h16H304h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [576, 512, [\"mail-bulk\"], \"f674\", \"M96 0C78.3 0 64 14.3 64 32V224h96V192c0-35.3 28.7-64 64-64H448V32c0-17.7-14.3-32-32-32H96zM224 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H544c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H224zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM32 256c-17.7 0-32 14.3-32 32v13L155.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L320 301V288c0-17.7-14.3-32-32-32H32zm288 84.8L184 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L0 340.8V480c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M421.7 220.3l-11.3 11.3-22.6 22.6-205 205c-6.6 6.6-14.8 11.5-23.8 14.1L30.8 511c-8.4 2.5-17.5 .2-23.7-6.1S-1.5 489.7 1 481.2L38.7 353.1c2.6-9 7.5-17.2 14.1-23.8l205-205 22.6-22.6 11.3-11.3 33.9 33.9 62.1 62.1 33.9 33.9zM96 353.9l-9.3 9.3c-.9 .9-1.6 2.1-2 3.4l-25.3 86 86-25.3c1.3-.4 2.5-1.1 3.4-2l9.3-9.3H112c-8.8 0-16-7.2-16-16V353.9zM453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-14.5 14.5-22.6 22.6-11.3 11.3-33.9-33.9-62.1-62.1L314.3 67.7l11.3-11.3 22.6-22.6 14.5-14.5c25-25 65.5-25 90.5 0z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V256H416c-17.7 0-32-14.3-32-32V128H320 272zM160 88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm256 40v96h96l-96-96z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80c0-13.3-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24s24-10.7 24-24zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm328 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M101.5 64C114.6 26.7 150.2 0 192 0s77.4 26.7 90.5 64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h37.5zM224 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM160 368c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM96 392c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm64-120c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM96 296c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-24c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm88 32c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 396 61.3 324.1 142.7 307.6l68.5 91.4c6.4 8.5 19.2 8.5 25.6 0l68.5-91.4C386.7 324.1 448 396 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [640, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M633.3 12.4c10.8 14 8.3 34.1-5.6 44.9l-144 112-72 56L403 232l28.3 36.3c3.7 4.8 4.4 11.2 1.8 16.7s-8.1 9-14.1 9.1l-48 .9L292.3 194.2l12.5-46.3c1.6-5.9 6.3-10.3 12.3-11.5s12 1.1 15.8 5.8l30.8 39.4 8.7-6.8 72-56 144-112c13.9-10.9 34.1-8.3 44.9 5.6zM269.1 476.3c-55.5 43.4-215 34.2-252.3 31.4c-5.1-.4-9.7-2.9-12.8-7s-4.5-9.1-3.6-14.1c.5-3.2 1.3-7.2 2.2-12.1c3-16.5 10.8-31.6 21.9-44.1l73.5-82.5c3.1-3.5 3.2-8.6 .4-12.3s-7.9-4.7-12-2.6L47.3 353.5c-6.3 3.3-13.4-2.7-11-9.4c14.3-39.9 32.7-76.9 55.5-94.7c57.7-45.1 175.3-35.5 175.3-35.5l78.8 100.9s-19.1 116.4-76.8 161.5zM496 512c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM352 320c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zm93.7-171.1c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM320 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM512 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM480 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.3-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72zm264-72c0-39.8-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72s72-32.2 72-72zm-240 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm192 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [640, 512, [], \"e57f\", \"M520.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L521.5 72 118.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M192 64c0 35.3-28.7 64-64 64s-64-28.7-64-64S92.7 0 128 0s64 28.7 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM576 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 320c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM160 112c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM112 448c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 224c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm32-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [576, 512, [9770], \"f699\", \"M32 256C32 114.6 146.6 0 288 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C352.6 505.7 321 512 288 512C146.6 512 32 397.4 32 256zM407.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L293 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 56.7 24.2 76.9C640 437.9 568.7 512 480 512c-89.7 0-160-74.2-160-161.9c0-26.4 12.7-58.6 32.4-90.6c20-32.4 48.1-66.1 81.4-95.8c5.6-5 14.2-5 19.8 0zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 304c-10.1 0-19.6-4.7-25.6-12.8L192 256 47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M184 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zM568 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm8 157.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V176c0-8.8-7.2-16-16-16H160z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm32 224c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [576, 512, [\"sign-out\"], \"f08b\", \"M534.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L434.7 224 224 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-53 0-96 43-96 96l0 256c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [576, 512, [], \"f740\", \"M128 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C96.7 126.1 96 119.1 96 112C96 50.1 146.1 0 208 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H128zm-14.5 33.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM345.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM192 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [127988, 61725], \"f024\", \"M64 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32C0 14.3 14.3 0 32 0S64 14.3 64 32zm40.8 302.8c-3 .9-6 1.7-8.8 2.6V13.5C121.5 6.4 153 0 184 0c36.5 0 68.3 9.1 95.6 16.9l1.3 .4C309.4 25.4 333.3 32 360 32c26.8 0 52.9-6.8 73-14.1c9.9-3.6 17.9-7.2 23.4-9.8c2.7-1.3 4.8-2.4 6.2-3.1c.7-.4 1.1-.6 1.4-.8l.2-.1c9.9-5.6 22.1-5.6 31.9 .2S512 20.6 512 32V288c0 12.1-6.8 23.2-17.7 28.6L480 288c14.3 28.6 14.3 28.6 14.3 28.6l0 0 0 0-.1 0-.2 .1-.7 .4c-.6 .3-1.5 .7-2.5 1.2c-2.2 1-5.2 2.4-9 4c-7.7 3.3-18.5 7.6-31.5 11.9C424.5 342.9 388.8 352 352 352c-37 0-65.2-9.4-89-17.3l-1-.3c-24-8-43.7-14.4-70-14.4c-27.5 0-60.1 7-87.2 14.8z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M137.9 3c-4.5-3.2-10.3-3.9-15.4-1.8s-8.8 6.7-9.7 12.2L98.7 98.7 13.4 112.8c-5.5 .9-10.1 4.6-12.2 9.7S-.2 133.4 3 137.9l50.3 70.3L3 278.5c-3.2 4.5-3.9 10.3-1.8 15.4s6.7 8.8 12.2 9.7l85.3 14.1L112.8 403c.9 5.5 4.6 10.1 9.7 12.2s10.9 1.4 15.4-1.8l55.2-39.5c-19.9-21.9-32.3-50.8-33.1-82.6c-17.6-10.2-32.2-26.1-40.6-46.3c-20.3-49 3-105.1 52-125.4c29.4-12.2 61.4-8.7 86.7 6.7c13.1-21.8 32.5-39.4 55.8-50.3L303.6 13.4c-.9-5.5-4.6-10.1-9.7-12.2S282.9-.2 278.5 3L208.2 53.3 137.9 3zM291.4 415.9c-2.5 .6-5.1 .6-7.6-.1c1.4 0 2.8 .1 4.2 .1h3.5zm-46.3-260c-17.3-12.2-40.4-15.6-61.5-6.9c-32.7 13.5-48.2 51-34.6 83.6c3.6 8.7 8.9 16.1 15.3 22.2c10.6-39.7 39.9-71.8 77.8-86.4c.8-4.3 1.8-8.4 3-12.5zM277.4 420c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm74.5-116.1c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C433.3 114.6 402.8 96 368 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H559.9c44.2 0 80-35.8 80-80z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 80c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm44.7 84.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M50.8 452.1L19.2 477.4c-2.1 1.7-4.7 2.6-7.4 2.6C5.3 480 0 474.7 0 468.2V192C0 86 86 0 192 0S384 86 384 192V468.2c0 6.5-5.3 11.8-11.8 11.8c-2.7 0-5.3-.9-7.4-2.6l-31.6-25.3c-3.3-2.7-7.5-4.1-11.8-4.1c-5.9 0-11.5 2.8-15 7.5l-37.6 50.1c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4l-38.4-51.2c-3-4-7.8-6.4-12.8-6.4s-9.8 2.4-12.8 6.4l-38.4 51.2c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L77.6 455.5c-3.6-4.7-9.1-7.5-15-7.5c-4.3 0-8.4 1.5-11.7 4.1zM160 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H179.9l-9.1-48h317c14.3 0 26.9-9.5 30.8-23.3l54-192C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm336-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM252 160c0-11 9-20 20-20h44V96c0-11 9-20 20-20s20 9 20 20v44h44c11 0 20 9 20 20s-9 20-20 20H356v44c0 11-9 20-20 20s-20-9-20-20V180H272c-11 0-20-9-20-20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 248c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm-24 56c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-160c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-96c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 410 0 304C0 192 96 16 192 16s192 176 192 288c0 106-86 192-192 192zM156.5 138l0 0 0 0 0 0c5.5-6.9 4.4-17-2.5-22.5s-17-4.4-22.5 2.5L144 128c-12.5-10-12.5-10-12.5-10l0 0 0 0-.1 .1-.2 .2-.6 .8c-.5 .7-1.3 1.7-2.2 3c-1.9 2.6-4.5 6.3-7.7 11c-6.3 9.4-14.6 23-23 39.7C81.1 206.1 64 252.6 64 304c0 8.8 7.2 16 16 16s16-7.2 16-16c0-44.6 14.9-86.1 30.3-116.8c7.6-15.3 15.3-27.7 21-36.3c2.8-4.3 5.2-7.6 6.8-9.8c.8-1.1 1.4-1.9 1.8-2.4l.4-.6 .1-.1 0 0z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M371.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L600.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S549.7-4.4 531.1 9.6L294.4 187.2c-24 18-38.2 46.1-38.4 76.1L371.3 367.1zm-19.6 25.4l-116-104.4C175.9 290.3 128 339.6 128 400c0 3.9 .2 7.8 .6 11.6c1.8 17.5-10.2 36.4-27.8 36.4H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H240c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128c35.3 0 64-28.7 64-64S99.3 0 64 0S0 28.7 0 64s28.7 64 64 64z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84.1 96c0-11.1-9-20.1-20.1-20.1s-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4.1c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0 0 0c-2.2-.8-4.3-1.5-6.3-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V416c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V224z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zm-2.9 207c-6.6 18.6-24.4 32-45.3 32s-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16zM160 432c-20.9 0-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16c-6.6 18.6-24.4 32-45.3 32z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.2 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M168 32c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32h8c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32h-8c0 17.7-14.3 32-32 32H200c-17.7 0-32-14.3-32-32h-8c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32l8 0zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 96c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm200-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M304 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM248 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 160c-44.2 0-80-35.8-80-80S99.8 0 144 0s80 35.8 80 80s-35.8 80-80 80zm368 0c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM416 224c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [448, 512, [], \"e599\", \"M224 96c0-53 43-96 96-96h38.4C407.9 0 448 40.1 448 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H320c-53 0-96-43-96-96zm144-8c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-16c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V416H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64-64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM352 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm64 120c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [384, 512, [129463], \"f5c9\", \"M154.1 52.1C137.3 39.1 116.7 32 95.5 32C42.7 32 0 74.7 0 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2L80.4 460.2c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C160.2 323.7 175 312 192 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [448, 512, [118], \"56\", \"M51.7 34.5c16.3-6.8 35 .9 41.8 17.2L224 364.8 354.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7l-160-384c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.2 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.3 319.8c22.3-2.1 39.7-20.8 39.7-43.7c0-10-3.4-19.6-9.6-27.4l-42-52.6c-8.3-10.3-12.8-23-15-36.1C398.2 69.3 319.2 0 224 0H201.7C157 0 115.7 14.5 82.2 39.2L38.8 5.1zM0 201.7c0 44.8 18.3 91.5 46.5 127.7C56.9 342.8 64 358.8 64 375.8V480c0 17.7 14.3 32 32 32H256c17.7 0 32-14.3 32-32h64c32.8 0 59.9-24.7 63.6-56.6l-9.4-7.4H352c-17.7 0-32-14.3-32-32c0-10.5 5.1-19.9 12.9-25.7L20.8 112.4C7.5 139.3 0 169.6 0 201.7zM632 288c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm-88 72c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm64 48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM112 144c0-8.8 7.2-16 16-16h48V80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240v48c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V192H128c-8.8 0-16-7.2-16-16V144z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [576, 512, [9731, 9924], \"f7d0\", \"M373.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L440 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C428.7 296.9 448 338.2 448 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H213.3c-13.9 0-27.7-4.2-37.5-13.9C146.3 469 128 428.7 128 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3l-73.6-31.5-56-24c-12.2-5.2-17.8-19.3-12.6-31.5s19.3-17.8 31.5-12.6L88 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L184.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C196 127.2 192 112.1 192 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM256 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm48 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm-16 80c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm16 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM320 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM408 176c0 48.6-39.4 88-88 88s-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88zm-88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 96c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [512, 512, [113], \"51\", \"M96 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C403.9 325.8 416 292.3 416 256c0-88.4-71.6-160-160-160S96 167.6 96 256zM376.9 444.6C342 467 300.5 480 256 480C132.3 480 32 379.7 32 256S132.3 32 256 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32c0 123.7-100.3 224-224 224S0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V200c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM256 288c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 44.3-35.8 80.1-80 80.1c-1.4 0-2.8 .2-4 .5H128c-35.3 0-64 28.7-64 64c0 12.4 3.5 24 9.7 33.8C31.6 234.3 0 271.5 0 316c0 49.1 38.5 89.2 86.9 91.9c-1.8-2.9-3.4-6.1-4.5-9.4c-6-17.5-.5-36.9 13.6-48.5L238.2 233.6c15.6-12.8 37.9-12.7 53.5 .1s20.3 35.1 11.3 53.4l-26 53.2h16.3c18.1 0 34.3 11.7 40.3 29.2c4.5 13.1 2.6 27.3-4.6 38.4h27c50.8 0 92-41.2 92-92c0-44.5-31.6-81.7-73.7-90.2c6.1-9.8 9.7-21.4 9.7-33.8c0-35.3-28.7-64-64-64h-5.7c3.7-10.2 5.7-21.1 5.7-32.6c0-48.7-36.1-88.9-83.1-95.2zm34.2 259.2c-6-4.6-14.3-4.4-20.1 .4l-133.4 112c-5.2 4.3-7 11.4-4.7 17.7s8.3 10.5 15 10.5h54.7l-42.5 89.1c-3.2 6.8-1.3 14.9 4.7 19.5s14.3 4.4 20.1-.4l133.4-112c5.1-4.3 7-11.4 4.7-17.7s-8.3-10.5-15-10.5H233.3l42.5-89.1c3.2-6.8 1.3-14.9-4.7-19.5z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-186 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192s192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 64c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm32-144c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [384, 512, [\"file-medical-alt\"], \"f478\", \"M64 0C28.7 0 0 28.7 0 64V288H112c6.1 0 11.6 3.4 14.3 8.8L144 332.2l49.7-99.4c2.7-5.4 8.2-8.8 14.3-8.8s11.6 3.4 14.3 8.8L249.9 288H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8L208 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L102.1 320H0V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 304c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM320 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm-16 80c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM400 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zm40-176c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 21 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm8 256V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 384c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [512, 512, [], \"e0d8\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM384 256c0 8.8-7.2 16-16 16H291.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L307 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L185 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C193.4 172.7 224 160 256 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM128 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L205 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L327 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C318.6 403.3 288 416 256 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S64 114.1 64 176s50.1 112 112 112zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [448, 512, [\"expand-arrows-alt\"], \"f31e\", \"M168 32H24C10.7 32 0 42.7 0 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79L81 335 41 295c-6.9-6.9-17.2-8.9-26.2-5.2S0 302.3 0 312V456c0 13.3 10.7 24 24 24H168c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H424c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H280c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S177.7 32 168 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512c70.7 0 128-57.3 128-128s-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M336 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM141.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L153.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L254 299l30.9-82.4 5.1 12.3C305 264.7 339.9 288 378.7 288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H378.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L73.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM107.2 352H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L173 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L107.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [128375], \"f717\", \"M190.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L113.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4-80.4-26.8c-2.4-.8-4.3-2.7-5.1-5.1L78.8 128.4C74.6 115.8 61 109 48.4 113.2S29 131 33.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L148.1 256 87.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L33.2 368.4C29 381 35.8 394.6 48.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8-57.4 57.4c-15.6 15.6-20.6 39-12.7 59.7l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L192 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L462.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L427.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L430.4 15.4C425.6 3 411.8-3.2 399.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L368 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C226.6 100.7 208 128.2 208 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [576, 512, [], \"e4f9\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L99.6 352H96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H256h64H448h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L441 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C329 209.7 320 233.4 320 258.1V320v32H256V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L64 144.8V96 32zm64 448v32H256V480h64v32H448V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H448 320 256 128 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v16H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H112c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v32H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H152c-8.9 0-17 4.9-21.2 12.7s-3.7 17.3 1.2 24.6l32 48C168.5 412 176 416 184 416H328c8 0 15.5-4 20-10.7l32-48c4.9-7.4 5.4-16.8 1.2-24.6S368.9 320 360 320H272V288h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V224H400c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V160h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 384c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm112-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [640, 512, [], \"f891\", \"M144 0c-12.9 0-24.6 7.8-29.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L98.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C168.6 7.8 156.9 0 144 0zm18.7 160H125.3L144 115.2 162.7 160zM288 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H320c-17.7 0-32 14.3-32 32zm96 64H352V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H352V160zM598.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L384 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM344 152c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm96-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zM344 408c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm104-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M192 352V48c0-26.5 21.5-48 48-48H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H192zm16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [512, 512, [], \"e53a\", \"M256 160c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM468.8 382.8L405.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.7-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L59.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2l67.1-100.6c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM352 332c0-24.3-19.7-44-44-44s-44 19.7-44 44s19.7 44 44 44s44-19.7 44-44z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M352 96h64c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96-43 96-96V128c0-53-43-96-96-96H352c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-7.5 177.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H160v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192c0-70.7-57.3-128-128-128S96 121.3 96 192s57.3 128 128 128s128-57.3 128-128zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM144 241.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm77.9 252.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 64c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M288 96c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm58.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M384 176c0 70.7-57.3 128-128 128s-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128zm7.8-112C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [9822], \"f441\", \"M32 391.6V416H352V224c0-106-86-192-192-192H12.9C5.8 32 0 37.8 0 44.9c0 2 .5 4 1.4 5.8L16 80 9.4 86.6c-6 6-9.4 14.1-9.4 22.6V242.3c0 13.1 8 24.9 20.1 29.7l46.5 18.6c8.5 3.4 18 3 26.2-1.1l6.6-3.3c8-4 14-11.2 16.5-19.8l8.3-28.9c2.5-8.6 8.4-15.8 16.5-19.8L160 208v40.4c0 24.2-13.7 46.4-35.4 57.2L67.4 334.3C45.7 345.2 32 367.3 32 391.6zM72 148c0 11-9 20-20 20s-20-9-20-20s9-20 20-20s20 9 20 20zM352 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [576, 512, [], \"f193\", \"M224 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM152.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C75.1 225.1 32 283.5 32 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C272 440 234.8 464 192 464c-61.9 0-112-50.1-112-112c0-47.9 30.1-88.8 72.5-104.8zM291.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L434 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H314.2l-9.6-48H368c17.7 0 32-14.3 32-32s-14.3-32-32-32H291.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zM384 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M256 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zM176 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.1 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M320 128V49.1L186.6 .3c-11.4-4.2-24 .9-29.5 11.7L71.8 181.1c-30.8 61-8 133.8 48.1 167.4l-28 77.4L32.1 403.9C19.7 399.4 6 405.8 1.4 418.3s1.9 26.3 14.3 30.8l164.6 60.3c12.4 4.5 26.1-1.9 30.6-14.4s-1.9-26.3-14.3-30.8l-59.9-21.9 28-77.3c68.1 11.6 135.7-32.8 150.1-103.6l5.1-24.8 5.1 24.8c14.5 70.8 82 115.2 150.1 103.6l28 77.3-59.9 21.9c-12.4 4.5-18.8 18.3-14.3 30.8s18.2 18.9 30.6 14.4l164.6-60.3c12.4-4.5 18.8-18.3 14.3-30.8s-18.2-18.9-30.6-14.4l-59.9 21.9-28-77.4c56.1-33.6 78.8-106.4 48.1-167.4L482.9 12C477.4 1.1 464.7-3.9 453.4 .3L320 49.1V128h0zm-35.7 44.4L153.9 124.6l36.3-71.9L300.6 93.1l-16.2 79.3zm71.3 0L339.4 93.1 449.8 52.7l36.3 71.9L355.7 172.4z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H48C21.5 64 0 85.5 0 112V464c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-80 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M256 496c132.5 0 240-107.5 240-240S388.5 16 256 16S16 123.5 16 256s107.5 240 240 240zM235.3 76.7L256 97.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L278.6 120 324 165.4 357.4 132l-16.7-16.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L380 109.4l8.7-8.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-8.7 8.7 16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L380 154.6 346.6 188 392 233.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L414.6 256l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L392 278.6 346.6 324 380 357.4l16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L402.6 380l8.7 8.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-8.7-8.7-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L357.4 380 324 346.6 278.6 392l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L256 414.6l-20.7 20.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L233.4 392 188 346.6 154.6 380l16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L132 402.6l-8.7 8.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l8.7-8.7L92.7 363.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L132 357.4 165.4 324 120 278.6 99.3 299.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L97.4 256 76.7 235.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L120 233.4 165.4 188 132 154.6l-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L109.4 132l-8.7-8.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l8.7 8.7 16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L154.6 132 188 165.4 233.4 120 212.7 99.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM210.6 188L256 233.4 301.4 188 256 142.6 210.6 188zm68 68L324 301.4 369.4 256 324 210.6 278.6 256zM256 278.6L210.6 324 256 369.4 301.4 324 256 278.6zM233.4 256L188 210.6 142.6 256 188 301.4 233.4 256z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-96 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M312 56c0-30.9-25.1-56-56-56s-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56zM64 480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM34 169.4L9.2 185.8C3.5 189.7 0 196.2 0 203.1c0 3.2 .7 6.4 2.2 9.3L104 416H408L509.8 212.4c1.4-2.9 2.2-6.1 2.2-9.3c0-6.9-3.5-13.4-9.2-17.3L478 169.4c-8.2-5.4-19-4.4-26 2.6c-12.9 12.9-30.9 21.9-48 15.5c-17.9-6.7-28.1-20.1-32.8-35.8C367.5 139 357.3 128 344 128H328c-13.3 0-23.9 11.2-29.6 23.2C292.6 163.4 280.6 176 256 176s-36.6-12.6-42.4-24.8c-5.7-12-16.3-23.2-29.6-23.2H168c-13.3 0-23.5 11-27.3 23.7c-4.7 15.6-14.9 29.1-32.8 35.8c-17 6.4-35.1-2.7-48-15.5c-6.9-6.9-17.8-8-25.9-2.6z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [512, 512, [\"hands-wash\"], \"e05e\", \"M384 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 160c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM128 464c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM357.1 157.5c-.3 .7-.7 1.5-1.1 2.2l-17.8 30.9c-11-12.6-27.4-19.8-44.4-19.1l20.7-35.8c6.6-11.5 21.3-15.4 32.8-8.8c10.8 6.2 14.9 19.5 9.9 30.6zm-173.6 47C112.3 227.2 64 293.3 64 368c0 1.5 0 3 .1 4.5C24.3 346.9 0 302.8 0 255.1V131.5c0-13.3 10.7-24 24-24s24 10.7 24 24l0 81.7L164.2 12c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-64 110.9c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9l80-138.6c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-80 138.6c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9L275 76c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-44 76.2-89.1 28.3zM448 483.5c0 12.4-9.4 22.6-21.5 23.9c-.8 .1-1.6 .1-2.5 .1H223.3 216c-22.1 0-42.9-6-60.7-16.5c3-8.5 4.7-17.6 4.7-27c0-38.7-27.5-71-64-78.4c0-.6 0-1.1 0-1.7c0-1.2-.1-2.5-.1-3.7c0-68 44-128.3 108.9-148.9l83.9-26.7c12.6-4 26.1 3 30.1 15.6s-3 26.1-15.6 30.1l-53.8 17.1H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8h96c13.3 0 24 10.7 24 24z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 384c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 112c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V0L440.6 23.8C424.3 29.2 407.2 32 390 32H122c-17.2 0-34.3-2.8-50.6-8.2L0 0V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM592 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M0 224.2c0-22.2 3.2-43.6 9.2-63.9l227 165.1C228.5 337.8 224 352.4 224 368V512H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm258.6 77.9L21 129.3C56.7 53 134.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 4.1-.6 8.1-1.6 11.9H304c-16.9 0-32.5 5.2-45.4 14.1zM352 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM256 512V368c0-26.5 21.5-48 48-48H512l-16 48H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.3l-10.7 32H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H464l-1.4 4.2c-8.7 26.1-33.2 43.8-60.7 43.8H256z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM96 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.6 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [640, 512, [\"dolly-box\"], \"f472\", \"M32 32C32 14.3 46.3 0 64 0h72.9c27.5 0 52 17.6 60.7 43.8L289.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L384 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L136.9 64H64C46.3 64 32 49.7 32 32zM276.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L343 79.4l19.8 60.9 60.9-19.8L403.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L366.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L276.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm216 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm-56-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM200 424c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26H388.7c14.2 0 25.4 12.3 21.7 26C392 382 329.8 432 256 432s-136-50-154.4-118zm116-101.2l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.5 169.9c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-59-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [384, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v44.5c0 17.4-4.7 34.5-13.7 49.4L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1C136.1 390 144 361.5 144 332.5V288H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM256 144c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM240 248c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 39.5-161.2c77.2 12 136.3 78.8 136.3 159.4c0 17-13.8 30.7-30.7 30.7H265.1 182.9 30.7C13.8 512 0 498.2 0 481.3c0-80.6 59.1-147.4 136.3-159.4l39.5 161.2 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M224 402.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V402.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M117.2 160.4L224 64.3V64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144C3.9 190.3 0 198.9 0 208s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2v-.3L117.2 255.6C103.7 243.4 96 226.1 96 208s7.7-35.4 21.2-47.6zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M448 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM408.8 335.4c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM344 304c0 48.6-39.4 88-88 88s-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm208-16c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [640, 512, [], \"e507\", \"M471.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C433.2 261.3 448 236.4 448 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C248.3 46.6 229.9 32 208 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L471.7 401.9zM512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM100.3 87C75.1 61.8 32 79.7 32 115.3V432c0 44.2 35.8 80 80 80H428.7c35.6 0 53.5-43.1 28.3-68.3L100.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zm396.3 211c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3L435.1 416H588.9L514.2 273.3zM512 224c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 498.6 562.2 512 512 512s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 251c8.7-16.6 25.9-27 44.7-27zM128 144c-.9 0-1.7 .5-2.2 1.3L51.1 288H204.9L130.2 145.3c-.4-.8-1.3-1.3-2.2-1.3zm44.7-21l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 370.6 178.2 384 128 384s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 123C92 106.4 109.2 96 128 96s36 10.4 44.7 27z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM448 208c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [512, 512, [], \"e4c0\", \"M329.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L370.7 160H160c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C32 153.3 89.3 96 160 96H370.7L329.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 416H128c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H274.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM184 296c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm312 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 64c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 78.3 364 32 448 32h32c17.7 0 32 14.3 32 32zM0 128c0-17.7 14.3-32 32-32H64c123.7 0 224 100.3 224 224v32 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C100.3 352 0 251.7 0 128z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l16-64c2.4-9.6 .2-19.7-5.8-27.5S553.9 32 544 32H376.1h-.3H192c-14.7 0-27.5 10-31 24.2l-9.3 37.3L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12.1 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H384c-17.7 0-32-14.3-32-32V383.7c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32V480c0 17.7-14.3 32-32 32H96.1c-17.7 0-32-14.3-32-32V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm-8 256v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H528L284.3 320z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM272 224c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480c61.4 0 101.6 24 126.2 50c12 12.6 19.9 25.2 24.9 34.9c2.5 4.8 4.3 9 5.5 12.1c.6 1.5 1.1 2.8 1.4 3.8c.2 .5 .3 .9 .4 1.3l.1 .5 .1 .2 0 .1 0 0c0 0 0 0-30.2 9.1l30.2-9.1c5.1 16.9-4.5 34.8-21.5 39.8c-16.8 5-34.5-4.4-39.7-21.1l0 0c-.1-.2-.2-.6-.5-1.2c-.5-1.3-1.4-3.4-2.8-6.1c-2.8-5.4-7.4-12.8-14.4-20.1c-4.2-4.4-9.4-9-15.8-13.2V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zm129.4-70.8c0 0 0 0 30.6-9.2l-30.6 9.2 0 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [576, 512, [9975, \"skiing\"], \"f7c9\", \"M508.7 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM34.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L264.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L321.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L44.9 301.3c-11.8-6.1-16.3-20.6-10.2-32.4zM150.9 65.6L169 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L183.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [448, 512, [97], \"41\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM296 320H152l72-172.8L296 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [512, 512, [\"temperature-down\"], \"e03f\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H448V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H352c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M32 32H64h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 320 288 64C0 46.3 14.3 32 32 32zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.7 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H424c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm0 184c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16zM160 400c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256c-13.3 0-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [640, 512, [], \"e520\", \"M344 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H463.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L247.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L380 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L515.6 400H528c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C608 143 497 32 360 32H344zm50.5 168l17.1 40H365l29.5-40zm-87.7 38.1l-1.4 1.9H257.1l32.7-41.5 16.9 39.5zM120.8 240C89.4 240 64 265.4 64 296.8c0 15.5 6.3 30 16.9 40.4L158.7 240H120.8zM528 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164.1 160v6.3c6.6 1.2 16.6 3.2 21 4.4c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-3.8-1-17.4-3.7-21.7-4.3c-12.2-1.9-22.2-.3-28.6 2.6c-6.3 2.9-7.9 6.2-8.2 8.1c-.6 3.4 0 4.7 .1 5c.3 .5 1 1.8 3.6 3.5c6.1 4.2 15.7 7.2 29.9 11.4l.8 .2c12.1 3.7 28.3 8.5 40.4 17.4c6.7 4.9 13 11.4 16.9 20.5c4 9.1 4.8 19.1 3 29.4c-3.3 19-15.9 32-31.6 38.7c-4.9 2.1-10 3.6-15.4 4.6V352c0 11.1-9 20.1-20.1 20.1s-20.1-9-20.1-20.1v-6.4c-9.5-2.2-21.9-6.4-29.8-9.1c-1.7-.6-3.2-1.1-4.4-1.5c-10.5-3.5-16.1-14.8-12.7-25.3s14.8-16.1 25.3-12.7c2 .7 4.1 1.4 6.4 2.1l0 0 0 0c9.5 3.2 20.2 6.9 26.2 7.9c12.8 2 22.7 .7 28.8-1.9c5.5-2.3 7.4-5.3 8-8.8c.7-4 .1-5.9-.2-6.7c-.4-.9-1.3-2.2-3.7-4c-5.9-4.3-15.3-7.5-29.3-11.7l-2.2-.7c-11.7-3.5-27-8.1-38.6-16c-6.6-4.5-13.2-10.7-17.3-19.5c-4.2-9-5.2-18.8-3.4-29c3.2-18.3 16.2-30.9 31.1-37.7c5-2.3 10.3-4 15.9-5.1v-6c0-11.1 9-20.1 20.1-20.1s20.1 9 20.1 20.1z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm194.8-6.4c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M96 96c-17.7 0-32 14.3-32 32s-14.3 32-32 32s-32-14.3-32-32C0 75 43 32 96 32h97c70.1 0 127 56.9 127 127c0 52.4-32.2 99.4-81 118.4l-63 24.5 0 18.1c0 17.7-14.3 32-32 32s-32-14.3-32-32V301.9c0-26.4 16.2-50.1 40.8-59.6l63-24.5C240 208.3 256 185 256 159c0-34.8-28.2-63-63-63H96zm48 384c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 288c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [448, 512, [\"external-link\"], \"f08e\", \"M288 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L169.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 141.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H288zM80 64C35.8 64 0 99.8 0 144V400c0 44.2 35.8 80 80 80H336c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm64 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm352-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM448 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zm-166.2-89l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm80-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-216c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm72 24c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM104 432c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM256 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [256, 512, [], \"e4c5\", \"M88 0h80c13.3 0 24 10.7 24 24V64H64V24C64 10.7 74.7 0 88 0zM0 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.2 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C8.5 415.4 0 400.7 0 384s8.5-31.4 21.5-40C8.5 335.4 0 320.7 0 304s8.5-31.4 21.5-40C8.5 255.4 0 240.7 0 224c0-15.6 7.4-29.4 18.9-38.2C7.5 178.7 0 166.1 0 151.7zM64 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6L66.5 148.4zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 208c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm256 32c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M32 32C14.3 32 0 46.3 0 64V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H32zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M96 0C80.7 0 67.6 10.8 64.6 25.7l-64 320c-1.9 9.4 .6 19.1 6.6 26.6S22.4 384 32 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H608c9.6 0 18.7-4.3 24.7-11.7s8.5-17.2 6.6-26.6l-64-320C572.4 10.8 559.3 0 544 0H96zm5.4 168L122.2 64h90.4L202.3 168H101.4zm-9.6 48H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104H235.3l10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l20.8 104zm-149.1 0h-139L260.9 64H379.1l10.4 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 192c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zM400 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144C288 64.5 223.5 0 144 0S0 64.5 0 144s64.5 144 144 144s144-64.5 144-144zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [576, 512, [9842, 9850, 9851], \"f1b8\", \"M206.7 45.1C224.2 17 255 0 288 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L315 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM461.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L352 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L68 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L214 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3-51.5 82.4c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0c-53.1 0-96.1-43.2-95.8-96.4c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320h73.8c34.2 0 93.7-28 93.7-64c0-35-59.5-64-93.7-64l-116.6 0L297.2 16.1C291.5 6.2 280.9 0 269.4 0H213.2c-10.6 0-18.3 10.2-15.4 20.4l40.3 140.9L38.8 5.1zm2.7 123.6C36 130.6 32 135.9 32 142c0 1.3 .2 2.6 .5 3.9L64 256 32.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14H88c5 0 9.8-2.4 12.8-6.4L144 320H246.9l-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1l65.3-114.3L41.5 128.7z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64C119 35.5 158.6 15 202.3 5.6C206 19.1 208 33.3 208 48c0 38.4-13.5 73.7-36.1 101.3L86.6 64zM64 86.6l85.2 85.2C121.7 194.5 86.4 208 48 208c-14.7 0-28.9-2-42.4-5.7C15 158.6 35.5 119 64 86.6zM256 0c64.9 0 124.2 24.2 169.4 64L256 233.4 194.6 172C222.9 138.5 240 95.3 240 48c0-16.2-2-32-5.8-47.1C241.4 .3 248.7 0 256 0zM48 240c47.3 0 90.5-17.1 124-45.4L233.4 256 64 425.4C24.2 380.2 0 320.9 0 256c0-7.3 .3-14.6 .9-21.8C16 238 31.8 240 48 240zm463.1 37.8C496 274 480.2 272 464 272c-47.3 0-90.5 17.1-124 45.4L278.6 256 448 86.6c39.8 45.1 64 104.4 64 169.4c0 7.3-.3 14.6-.9 21.8zm-4.7 31.9C497 353.4 476.5 393 448 425.4l-85.2-85.2C390.3 317.5 425.6 304 464 304c14.7 0 28.9 2 42.4 5.7zM340.1 362.7L425.4 448C393 476.5 353.4 497 309.7 506.4C306 492.9 304 478.7 304 464c0-38.4 13.5-73.7 36.1-101.3zM317.4 340C289.1 373.5 272 416.7 272 464c0 16.2 2 32 5.8 47.1c-7.2 .6-14.5 .9-21.8 .9c-64.9 0-124.2-24.2-169.4-64L256 278.6 317.4 340z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H144c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 336c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM307.8 275.8l-128 128c-10.9 10.9-28.7 10.9-39.6 0l-64-64c-10.9-10.9-10.9-28.7 0-39.6s28.7-10.9 39.6 0L160 344.4 268.2 236.2c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm240 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zM272 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [640, 512, [], \"e4d0\", \"M196.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L160 71.7 133.9 14.1C128.4 2 114.1-3.3 102.1 2.1S84.7 21.9 90.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8s-21.4 15.2-18.8 28.2l8 40C42.7 175.9 52.6 184 64 184H96v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C114.7 274.6 135.8 288 160 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L224 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L236.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM528 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L464.8 250c-12.3 1-24.2 5.6-34.1 13.3L416 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L391 322.7 353.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L535.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L598.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s25-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.4-13.4-6.6-28-4.4-43.2c8.5-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM128 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm88 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM80 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [128008], \"f6be\", \"M288 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L248 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1C10.5 157.6-1.9 141.6 .2 124s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C325.3 164 320 146.6 320 128v0V32 12 10.7C320 4.8 324.7 .1 330.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L352 21.3l27.2 36.3L384 64h64l4.8-6.4L480 21.3 492.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C507.3 .1 512 4.8 512 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM400 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 256s96-96 96-160c0-53-43-96-96-96s-96 43-96 96c0 29.4 20.2 65.5 42.1 96H320c-53 0-96 43-96 96s43 96 96 96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H188.6c-6.2 9.6-12.6 18.8-19 27.2c-10.7 14.2-21.3 26.9-30 36.8H416c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h96zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM149.9 448c21.9-30.5 42.1-66.6 42.1-96c0-53-43-96-96-96s-96 43-96 96c0 64 96 160 96 160s3.5-3.5 9.2-9.6c.4-.4 .7-.8 1.1-1.2c3.3-3.5 7.1-7.8 11.4-12.8c.2-.2 .4-.4 .6-.6c9.4-10.8 20.7-24.6 31.6-39.8zM96 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 416c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM160 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm208 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM88.1 128l5.3-64H226.6l5.3 64H88.1z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM208.4 208c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm128 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M314.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c9.7 8.9 12.9 22.9 8.1 35.2S557.2 256 544 256H512V368c0 26.5-21.5 48-48 48H278.1C259.6 350.8 216.8 295.9 160 261.7V256h-9.9c-16.5-9-34-16.2-52.3-21.6c-4.1-12-.8-25.3 8.5-34l208-192zM304 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H304zM24 256c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM0 376c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M41.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 41.4 86.6zM288 416H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm64-96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 3 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [576, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M544 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM416 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM320 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM160 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM64 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [128653], \"f207\", \"M256 0C390.4 0 480 35.2 480 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C32 35.2 121.6 0 256 0zM96 160v96c0 17.7 14.3 32 32 32H240V128H128c-17.7 0-32 14.3-32 32zM272 288H384c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H272V288zM112 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 80c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zm-396.3 211c.4-.8 1.3-1.3 2.2-1.3s1.7 .5 2.2 1.3L204.9 416H51.1l74.7-142.7zM128 224c-18.8 0-36 10.4-44.7 27L5.5 399.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C45.1 498.6 77.8 512 128 512s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L172.7 251c-8.7-16.6-25.9-27-44.7-27zm384-80c.9 0 1.7 .5 2.2 1.3L588.9 288H435.1l74.7-142.7c.4-.8 1.3-1.3 2.2-1.3zm-44.7-21L389.5 271.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C429.1 370.6 461.8 384 512 384s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L556.7 123C548 106.4 530.8 96 512 96s-36 10.4-44.7 27z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [576, 512, [], \"e05a\", \"M455.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L228 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L135 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2c-12.7 3.6-20.1 16.9-16.5 29.7s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L247 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L403 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L471 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zm-331 332.7l0 0L176 368l-51.9-4.7zM240 320c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v32 64c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM336 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128zm128 80c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM288 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zm80 176c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64c0-35.3-28.7-64-64-64S96 28.7 96 64s28.7 64 64 64s64-28.7 64-64zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM211.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zM563.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM321.6 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM240 80c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C161.5 168.1 145 208 112 208c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C184.1 302.5 224 319 224 352c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C318.5 279.9 335 240 368 240c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C295.9 145.5 256 129 256 96c0-8.8-7.2-16-16-16zM216 224c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm72 32c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5c0-26.5-21.5-48-48.1-48s-48.1 21.5-48.1 48s21.5 48 48.1 48s48.1-21.5 48.1-48z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 64c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H384c-17.7 0-32-14.3-32-32zm93.7 300.9c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80c0-26.5-21.5-48-48-48S16 53.5 16 80s21.5 48 48 48s48-21.5 48-48zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H224 32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M304 64c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm0 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 320c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [576, 512, [], \"e1a8\", \"M368 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM167 119c9.4-9.4 24.6-9.4 33.9 0L324.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L39 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L87 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM465.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM456.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M216.3 2c4.8-2.6 10.5-2.6 15.3 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L216.3 2zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L8.3 414C3.2 411.2 0 405.9 0 400V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V400c0 5.9-3.2 11.2-8.3 14l-176 96c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM120 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM560 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80-32c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [448, 512, [\"external-link-alt\"], \"f35d\", \"M288 32c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L306.7 128 169.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L352 173.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V64c0-17.7-14.3-32-32-32H288zM80 64C35.8 64 0 99.8 0 144V400c0 44.2 35.8 80 80 80H336c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 224H88c30.9 0 56 25.1 56 56s-25.1 56-56 56H80v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V320 240c0-8.8 7.2-16 16-16zm24 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H80v48h8zm72-64c0-8.8 7.2-16 16-16h24c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-8.8 0-16-7.2-16-16V240zm32 112h8c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16h-8v96zm96-128h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V304 240c0-8.8 7.2-16 16-16z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160s160-71.6 160-160s-71.6-160-160-160zM0 256C0 132.3 100.3 32 224 32s224 100.3 224 224s-100.3 224-224 224S0 379.7 0 256z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.7 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 160c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm144-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M188.8 39.3c13.8 8.5 19.6 26.8 13.6 42.7L174.2 156c-5.3 14-18.5 22.5-32.4 21l-42.6-4.6c-17.4 54.1-17.4 113.2 0 167.3l42.6-4.6c13.9-1.5 27.1 7 32.4 21L202.4 430c6.1 15.9 .3 34.2-13.6 42.7l-56.4 34.8c-12.4 7.7-28 5.4-38.1-5.5C-31.4 366.1-31.4 145.9 94.3 10C104.4-.9 120.1-3.1 132.5 4.5l56.4 34.8zm218.4-5.5C471.2 86.6 512 166.6 512 256s-40.8 169.4-104.7 222.2c-10.2 8.4-25.3 7-33.8-3.2s-7-25.3 3.2-33.8C430.1 397.1 464 330.5 464 256s-33.9-141.1-87.3-185.2c-10.2-8.4-11.7-23.6-3.2-33.8s23.6-11.7 33.8-3.2zm-64.4 71.4C387.4 140.4 416 194.8 416 256s-28.6 115.6-73.1 150.8c-10.4 8.2-25.5 6.4-33.7-4s-6.4-25.5 4-33.7C346.6 342.7 368 301.8 368 256s-21.4-86.7-54.8-113.1c-10.4-8.2-12.2-23.3-4-33.7s23.3-12.2 33.7-4zm-65.4 71C303.1 193.5 320 222.8 320 256s-16.9 62.5-42.5 79.7c-11 7.4-25.9 4.5-33.3-6.5s-4.5-25.9 6.5-33.3c12.9-8.7 21.3-23.3 21.3-39.9s-8.4-31.2-21.3-39.9c-11-7.4-13.9-22.3-6.5-33.3s22.3-13.9 33.3-6.5z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M463.2 71.3c-2.4-12.8-9.8-24.1-20.7-31.3s-24.2-9.7-36.9-6.8l-216 48c-19.8 4.4-34.7 20.8-37.2 40.9l-8.8 70.6c5.3-.4 10.8-.7 16.5-.7c82.9 0 141.9 55.3 197.5 107.5l0 0c3.1 3 6.3 5.9 9.4 8.8C427.1 364.5 486.9 416 576 416c0 0 64 0 64-48c0-96-112-128-144-128h-1.6L463.2 71.3zM576 448c-102.9 0-171.1-60.5-230.9-116.3l-6.5-6C279.9 270.8 229.9 224 160 224c-57.8 0-97.4 28.6-123.1 63.5C10.7 323 0 363.8 0 384c0 35.3 28.7 64 64 64H576z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm64 128c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M224 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [8356], \"f195\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V192H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v32H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H78c-2.2 10.5-6.1 20.6-11.7 29.9L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [512, 512, [128206], \"f0c6\", \"M396.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M224 96c39.5 0 66.8 12.2 81.9 21.5L245.6 184l79.3 87.4 36.3-40c14.7-16.2 22.8-37.3 22.8-59.1v-27c0-15.6-4.1-30.8-12-44.3L337.7 42C326.4 22.7 307 6.8 282.1 3.5C267.8 1.6 248.4 0 224 0s-43.8 1.6-58 3.5C141 6.8 121.7 22.7 110.4 42L76 101c-7.8 13.4-12 28.7-12 44.3v27c0 21.9 8.1 42.9 22.8 59.1l57.9 63.8L224 382.6 334.2 504.1c6.4 7 16.3 9.7 25.4 6.6l72-24c7.7-2.6 13.6-8.8 15.6-16.7s0-16.2-5.4-22.2L303.3 295.2 224 207.8l-81.9-90.3C157.3 108.2 184.5 96 224 96zM202.4 406.5L123.2 319 6.3 447.9c-5.4 6-7.5 14.4-5.4 22.2s7.9 14.1 15.6 16.7l72 24c9 3 19 .4 25.4-6.6l88.6-97.7z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 320c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V352H384c-17.7 0-32-14.3-32-32zm93.7-171.1c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [448, 512, [], \"e1d3\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V213.6L55.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L96 280.1V448c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L160 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm96 64c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-448c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM224 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-320c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM416 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 32C14.3 32 0 46.3 0 64S14.3 96 32 96s32-14.3 32-32s-14.3-32-32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM224 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM416 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM208 384c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.7 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5 208 288l48-64h65z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm416 0c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 384c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm88 32c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 448c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128s-57.3 128-128 128zm0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm16 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 392c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm280-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M352 64c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM445.7 364.9c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 96c0 35.3-28.7 64-64 64S0 131.3 0 96S28.7 32 64 32s64 28.7 64 64zm96 176c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM80 416c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM224 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM480 96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM576 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM416 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M374.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 86.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm128-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-18.5 5-38.8 8.3-50.9 10c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.2-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M112 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32V224v64V416c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32h48V96zm416 0v32h48c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H528v32c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32-128c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm320 0c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM224 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H144c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160-80c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM128 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm224 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM400 256c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 98c-8.8-3.8-19-2-26 4.6l-144 136C2.7 243.1 0 249.4 0 256s2.7 12.9 7.5 17.4l144 136c7 6.6 17.2 8.4 26 4.6s14.5-12.5 14.5-22l0-88 288 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-288 0 0-88c0-9.6-5.7-18.2-14.5-22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM107.5 224H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7L144.7 210c-9.5 8.5-22.2 14-37.2 14z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChildRifle = {\n prefix: 'fas',\n iconName: 'child-rifle',\n icon: [576, 512, [], \"e4e0\", \"M176 128c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H59.4C48.7 96 40 104.7 40 115.4c0 3 .7 5.9 2 8.7c6 12.4 23.8 50.8 32.8 83.9H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h7.7C78 302.9 69.4 352.7 63.1 384H192.9c-6.4-31.3-14.9-81.1-16.6-128H184c13.3 0 24-10.7 24-24s-10.7-24-24-24h-2.8c9-33.2 26.8-71.5 32.8-83.9c1.3-2.7 2-5.6 2-8.7c0-10.7-8.7-19.4-19.4-19.4H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM25.2 451.4l-8.8 4.4C6.3 460.8 0 471.1 0 482.3C0 498.7 13.3 512 29.7 512H226.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H56.4C42.9 416 32 426.9 32 440.4c0 4.6-2.6 8.9-6.8 10.9zm279.2 4.4c-10.1 5-16.4 15.3-16.4 26.5c0 16.4 13.3 29.7 29.7 29.7H482.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H344.4c-13.5 0-24.4 10.9-24.4 24.4c0 4.6-2.6 8.9-6.8 10.9l-8.8 4.4zM304 259.9c0 7.8 2.8 15.3 8 21.1l18.9 21.4c5.4 6.1 8.2 14 8 22.1L337 384H462.5l-2.7-58.7c-.4-8.5 2.6-16.9 8.4-23.1l19.3-21c5.4-5.9 8.5-13.6 8.5-21.7V200c0-4.4-3.6-8-8-8H464c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H376c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v59.9zM392 336c-4.4 0-8-3.6-8-8V304c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 4.4-3.6 8-8 8H392z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M109.3 288L480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L491.5 359.9c3-12.8 4.5-26.2 4.5-39.9c0-74.1-102.3-230.6-150.9-300.7c-12.3-17.7-37.8-17.7-50.1 0c-20.8 30-51.4 75.8-79.6 124.1L38.8 5.1zM144 320c0 97.2 78.8 176 176 176c48.1 0 91.7-19.3 123.5-50.6L170 229.9c-15.6 34.7-26 66.6-26 90.1zm96 0c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H179.9l-9.1-48h317c14.3 0 26.9-9.5 30.8-23.3l54-192C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm336-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zm192 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 320l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40zM232 192c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 160l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40L40 32C17.9 32 0 49.9 0 72l0 48c0 22.1 17.9 40 40 40zM232 32c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M289 24.2C292.5 10 305.3 0 320 0H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H345L239 487.8c-3.2 13-14.2 22.6-27.6 24s-26.1-5.5-32.1-17.5L76.2 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c12.1 0 23.2 6.8 28.6 17.7l73.3 146.6L289 24.2zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [640, 512, [], \"f432\", \"M550.3 0c-10.9 0-21.4 3.4-30.2 9.8L279.7 184.6c-13.9 10.1-26.8 21.4-38.7 33.8L138.7 325.3c-9.2 9.6-19.3 18.4-30.1 26.3L79.3 372.9c1.3 1.5 2.6 3 3.9 4.7l48 64c1.6 2.2 3.1 4.4 4.4 6.6l27.3-19.9c11.6-8.4 24-15.8 37-21.8l135.3-63.1c16.7-7.8 32.7-17.2 47.6-28.1L619 143.6c13.2-9.6 21-24.9 21-41.2c0-11-3.6-21.8-10.2-30.6L609.6 44.8 591.4 20.6C581.7 7.6 566.5 0 550.3 0zM496 512c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM57.6 396.8c-10.6-14.1-30.7-17-44.8-6.4s-17 30.7-6.4 44.8l48 64c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-48-64z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [384, 512, [115], \"53\", \"M131.1 105.4c-20.1 8.6-30.8 21.8-33.9 39.4c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3c-16.8-5.6-25.8-23.7-20.3-40.5s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5-31.5-5.5c7.3-42.5 35.3-71.7 71.8-87.3c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.1 22.7c-11.2-3-48.2-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 120c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32 49.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM536 96c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM320 440c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V152c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h32l-18.8 75.1c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm208 32V320H96V192H288z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [576, 512, [9772], \"f66d\", \"M277.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C376.9 97.4 400 134 400 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L304 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L433.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L304 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C229.8 463.3 219.9 472 208 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L144 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C58.4 324.5 32 277.1 32 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29c4.8-3.2 8.9-5.7 11.8-7.3c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C137.2 119 128 149.5 128 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L272 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C199.1 254.6 176 218 176 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM252.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C259 210.2 264 190.9 264 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C317 141.8 312 161.1 312 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0-17.7 14.3-32 32-32l54.7 0c12.3-28.3 40.5-48 73.3-48s61 19.7 73.3 48L480 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-246.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 448c-17.7 0-32-14.3-32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-32-80c32.8 0 61 19.7 73.3 48l54.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-54.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l246.7 0c12.3-28.3 40.5-48 73.3-48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm73.3 0L480 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-214.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 128C14.3 128 0 113.7 0 96S14.3 64 32 64l86.7 0C131 35.7 159.2 16 192 16s61 19.7 73.3 48z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M320 144c0 79.5-64.5 144-144 144S32 223.5 32 144S96.5 0 176 0s144 64.5 144 144zM176 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM144 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM224 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zm0-160c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zM120 96c0 30.9-25.1 56-56 56S8 126.9 8 96S33.1 40 64 40s56 25.1 56 56z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v80c26.5 0 48 21.5 48 48s-21.5 48-48 48v80c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V304c-26.5 0-48-21.5-48-48s21.5-48 48-48V128c0-35.3-28.7-64-64-64H64zm64 96l0 192H448V160H128zm-32 0c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 88L32 208c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l288 0 0 88c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M63 23.9C59.4 10.1 46.9 0 32 0C14.3 0 0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V380.1c2-.8 4.8-1.8 8.2-3c8-2.8 19.4-6.6 32.6-10.4C131.9 359 164.5 352 192 352c26.3 0 46 6.4 70 14.4l1 .3c23.8 7.9 51.9 17.3 89 17.3c36.8 0 72.5-9.1 98.1-17.6c13-4.3 23.8-8.7 31.5-11.9c3.8-1.6 6.9-3 9-4c1.1-.5 1.9-.9 2.5-1.2l.7-.4 .2-.1 .1 0 0 0 0 0s0 0-14.3-28.6l14.3 28.6c10.8-5.4 17.7-16.5 17.7-28.6V289.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 311.5 402.1 320 368 320c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2C247.5 295.3 221.4 288 192 288c-29.7 0-61.9 7.5-87.3 15.3C92.1 307.2 81.5 311 74 313.9c-3.7 1.4-6.7 2.6-8.6 3.5L64 318V283.5c7.9-3 18.7-6.9 31.3-10.8c26.6-8.2 62.4-16.7 96.7-16.7c34.3 0 64.2 8.5 91.8 16.4l.7 .2c28.3 8.1 54.2 15.4 83.5 15.4c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V193.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 215.5 402.1 224 368 224c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2C247.5 199.3 221.4 192 192 192c-29.7 0-61.9 7.5-87.3 15.3C92.1 211.2 81.5 215 74 217.9c-3.7 1.4-6.7 2.6-8.6 3.5L64 222V187.5c7.9-3 18.7-6.9 31.3-10.8c26.6-8.2 62.4-16.7 96.7-16.7c34.3 0 64.2 8.5 91.8 16.4l0 0 .7 .2c28.3 8.1 54.2 15.4 83.5 15.4c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V97.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 119.5 402.1 128 368 128c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2c-6.7-1.9-13.2-3.8-19.7-5.5V72.8c9.6 2.4 18.8 5 27.8 7.6l.7 .2C312.8 88.7 338.7 96 368 96c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V32c0-11.4-6.1-21.9-15.9-27.7s-22-5.8-31.9-.2l-.2 .1c-.3 .2-.7 .4-1.4 .8c-1.3 .7-3.4 1.8-6.2 3.1c-5.5 2.6-13.6 6.2-23.4 9.8c-20 7.3-46.2 14.1-73 14.1c-26.7 0-50.6-6.6-79.1-14.8l-1.3-.4C252.3 9.1 220.5 0 184 0C147.3 0 109.8 9 82.6 17.4c-7.2 2.2-13.8 4.4-19.6 6.5zM208 48c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm-64 8c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 72c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm-48-8c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M192 0H48C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H162.7c6.6-18.6 24.4-32 45.3-32V272c0-44.2 35.8-80 80-80h32V128H224c-17.7 0-32-14.3-32-32V0zm96 224c-26.5 0-48 21.5-48 48v16 96 32H208c-8.8 0-16 7.2-16 16v16c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V432c0-8.8-7.2-16-16-16H592V288c0-35.3-28.7-64-64-64H320 304 288zm32 64H528V416H304V288h16zM224 0V96h96L224 0z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M472.7 188.8c-8.5 13.8-26.8 19.6-42.7 13.6L356 174.2c-14-5.3-22.5-18.5-21-32.4l4.6-42.6c-54.1-17.4-113.2-17.4-167.3 0l4.6 42.6c1.5 13.9-7 27.1-21 32.4L82 202.4c-15.9 6.1-34.2 .3-42.7-13.6L4.5 132.5c-7.7-12.4-5.4-28 5.5-38.1c135.9-125.8 356.1-125.8 492 0c10.9 10.1 13.2 25.7 5.5 38.1l-34.8 56.4zM32 272c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V272zm0 192c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V464zM96 352h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H384c-8.8 0-16-7.2-16-16V368zM336 256h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V272zm16 176h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V464c0-8.8 7.2-16 16-16zM128 464c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V464z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM320 80c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M288 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM243.3 230.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S80 114.1 80 176s50.1 112 112 112zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM256 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zM64 224c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM160 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zM288 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM256 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32H0zM32 64L56.6 43.5C48 33.2 33.8 29.3 21.1 33.9S0 50.5 0 64l32 0zM352 448l-24.6 20.5c8.6 10.3 22.8 14.2 35.5 9.6s21.1-16.6 21.1-30.1H352zM384 64c0-17.7-14.3-32-32-32s-32 14.3-32 32h64zM64 448V64H0V448H64zM7.4 84.5l320 384 49.2-41-320-384L7.4 84.5zM384 448V64H320V448h64z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-64-8c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [640, 512, [], \"e4b8\", \"M576 416L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L512 274.7 512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L192 274.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L86.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zM432 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 128c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM352 208c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [512, 512, [\"dedent\"], \"f03b\", \"M32 64c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 96 32 81.7 32 64zM224 192c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm32 96H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32zM32 448c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32zm.2-179.4c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L32.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H32zM160 224H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [576, 512, [8644, \"exchange\"], \"f0ec\", \"M422.6 278.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 176H64c-17.7 0-32-14.3-32-32s14.3-32 32-32H434.7L377.4 54.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l112 112c12.5 12.5 12.5 32.8 0 45.3l-112 112zm-269.3 224l-112-112c-12.5-12.5-12.5-32.8 0-45.3l112-112c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L141.3 336H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H141.3l57.4 57.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zM128 368c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zm288 0c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192h88l0 288c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32l0-288h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32.4 49.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM392 272c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm-96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 224c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zm-96 32c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm96-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [448, 512, [], \"e4f4\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm41 156.5L98.4 64H349.6L343 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L105 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 80c-88.4 0-160-71.6-160-160s71.6-160 160-160s160 71.6 160 160s-71.6 160-160 160zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM352 256c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zm32 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 352c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M0 464V316.9C0 208.5 68.3 111.8 170.5 75.6L340.2 15.5C361.6 7.9 384 23.8 384 46.4c0 11-5.5 21.2-14.6 27.3L336 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H48c-26.5 0-48-21.5-48-48zM328 224c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H352V352c0 53-43 96-96 96s-96-43-96-96V128H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M32 32C14.3 32 0 46.3 0 64V304v48 80c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L320 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L128 215.4V64c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM512 384c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 64c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64S28.7 64 64 64z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h64H384h64c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM384 512c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V480c0 17.7-14.3 32-32 32zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm200-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 201.7C0 90.3 90.3 0 201.7 0H224c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H416v32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 35.3-28.7 64-64 64H288c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V375.8c0-17-7.1-33-17.5-46.4C18.3 293.2 0 246.5 0 201.7zM336 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm272 88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40 24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm-64 48c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm128 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM608 504c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40-72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-25.3-19.5-46-44.3-47.9c7.7-8.5 12.3-19.8 12.3-32.1c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 320H96c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64V288c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M120 256c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm160 0c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm104 56c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M264 136c0 37.1-19.4 69.6-48.6 88H224c17.7 0 32 14.3 32 32s-14.3 32-32 32c0 96 24 128 24 128H72s24-32 24-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h8.5C75.4 205.6 56 173.1 56 136C56 78.6 102.6 32 160 32s104 46.6 104 104zM32 448H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 256c-70.7 0-128-57.3-128-128S249.3 0 320 0s128 57.3 128 128s-57.3 128-128 128zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M352 96c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM240 248V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M64.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L217.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L63.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM32 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L56.2 158C45.6 151.6 32 159.3 32 171.7zM326.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L338.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM512 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L302.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM249.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM57.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L46.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L418.9 238.1c-6.5-10-21.4-9.6-27.3 .8L306.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H199.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM190.4 176H353.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [512, 512, [\"temperature-up\"], \"e040\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM448 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M16 0H144c5.3 0 10.3 2.7 13.3 7.1l81.1 121.6c-49.5 4.1-94 25.6-127.6 58.3L2.7 24.9C-.6 20-.9 13.7 1.9 8.5S10.1 0 16 0zM509.3 24.9L401.2 187.1c-33.5-32.7-78.1-54.2-127.6-58.3L354.7 7.1c3-4.5 8-7.1 13.3-7.1H496c5.9 0 11.3 3.2 14.1 8.5s2.5 11.5-.8 16.4zM432 336c0 97.2-78.8 176-176 176s-176-78.8-176-176s78.8-176 176-176s176 78.8 176 176zM264.4 241.1c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zM176 288c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-32c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M601.2 5.1c10.4-8.2 25.5-6.3 33.7 4.1s6.3 25.5-4.1 33.7l-592 464c-10.4 8.2-25.5 6.3-33.7-4.1s-6.3-25.5 4.1-33.7l155.6-122C101.8 270 64 171.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c12 25.5 27.2 49.2 45 70.7L601.2 5.1zM325.7 343.7c13.7 9.1 28 17.3 43 24.3L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512c-104.9 0-201.3-36-277.7-96.4l91.3-72z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M543.9 251.4c0-1.1 .1-2.2 .1-3.4c0-48.6-39.4-88-88-88l-40 0H320l-16 0 0 0v16 72c0 22.1-17.9 40-40 40s-40-17.9-40-40V128h.4c4-36 34.5-64 71.6-64H408c2.8 0 5.6 .2 8.3 .5l40.1-40.1c21.9-21.9 57.3-21.9 79.2 0l78.1 78.1c21.9 21.9 21.9 57.3 0 79.2l-69.7 69.7zM192 128V248c0 39.8 32.2 72 72 72s72-32.2 72-72V192h80l40 0c30.9 0 56 25.1 56 56c0 27.2-19.4 49.9-45.2 55c8.2 8.6 13.2 20.2 13.2 33c0 26.5-21.5 48-48 48h-2.7c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48H224c-.9 0-1.8 0-2.7-.1l-37.7 37.7c-21.9 21.9-57.3 21.9-79.2 0L26.3 407.6c-21.9-21.9-21.9-57.3 0-79.2L96 258.7V224c0-53 43-96 96-96z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM32 160c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 496c97.2 0 176-78.8 176-176c0-74.1-102.3-230.6-150.9-300.7c-12.3-17.7-37.8-17.7-50.1 0C118.3 89.4 16 245.9 16 320c0 97.2 78.8 176 176 176zM112 320c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zm48 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zM64 176c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [320, 512, [], \"e447\", \"M96.9 96c2.1-11.6 8.7-19.8 21.1-25.4c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8c-34.7-5.7-69.4-3.6-98 9.3c-29.8 13.5-52.2 38.6-58 74.1c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C54.3 194.2 38.5 215.1 33.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM96 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm352-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [9820], \"f447\", \"M0 204.2V48c0-8.8 7.2-16 16-16H72c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h56c8.8 0 16 7.2 16 16V204.2c0 12.1-6.8 23.2-17.7 28.6l-28.6 14.3c-10.8 5.4-17.7 16.5-17.5 28.6C322.2 360.7 336 416 336 416H48s13.8-55.3 15.8-140.2c.3-12.1-6.6-23.2-17.5-28.6L17.7 232.8C6.8 227.4 0 216.3 0 204.2zM176 320h32c8.8 0 16-7.2 16-16V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.6-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [576, 512, [129345], \"f569\", \"M533.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L402.2 104.5C367.8 98.7 329 96 288 96C146.6 96 32 128 32 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM339.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C490.4 181.8 496 197.4 496 208c0 .8-2.7 17.2-46 35.9C411.1 260.7 354 272 288 272s-123.1-11.3-162-28.1C82.7 225.2 80 208.8 80 208c0-10.6 5.6-26.2 44.4-41.3C162.6 151.9 219.8 144 288 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [384, 512, [127848], \"f810\", \"M335.1 160c.6-5.3 .9-10.6 .9-16C336 64.5 271.5 0 192 0S48 64.5 48 144c0 5.4 .3 10.7 .9 16H48c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H336c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM64 288L168.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L320 288H64z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 448c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-96-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M160 48c0-26.5 21.5-48 48-48h48V80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V0h48c26.5 0 48 21.5 48 48V176c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48zM48 288H96v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h48c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48zm320 0h48v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h48c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM192 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352c79.5 0 144-64.5 144-144s-64.5-144-144-144S64 128.5 64 208s64.5 144 144 144z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H293c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219v-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 512c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176c48.6 0 88-39.4 88-88s-39.4-88-88-88s-88 39.4-88 88s39.4 88 88 88zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM272 280c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm56 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM96 240c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm368 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M0 24C0 10.7 10.7 0 24 0H96c11.5 0 21.4 8.2 23.6 19.5L122 32H312V134.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V32H541.8c21.2 0 36.5 20.3 30.8 40.7l-54 192c-3.9 13.8-16.5 23.3-30.8 23.3h-317l9.1 48H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H160c-11.5 0-21.4-8.2-23.6-19.5L76.1 48H24C10.7 48 0 37.3 0 24zM224 464c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm240 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.2-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.2 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm368 32V320H96V192H448z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [512, 512, [128369, 9760], \"f714\", \"M400 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H208c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C112 57.3 176.5 0 256 0s144 57.3 144 128zM200 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm144-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM35.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L256 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L327.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L256 419.8 78.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L184.4 384 49.7 316.6c-15.8-7.9-22.2-27.1-14.3-42.9z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432c0 13.3 10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144c26.5 0 48-21.5 48-48s-21.5-48-48-48S16 69.5 16 96s21.5 48 48 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48-208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0l139 92.7L602.4 126c22 4.9 37.6 24.4 37.6 46.9V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V172.8c0-22.5 15.6-42 37.6-46.9L163.2 98.1l139-92.7zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72c48.6 0 88-39.4 88-88s-39.4-88-88-88s-88 39.4-88 88s39.4 88 88 88zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M318 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26S14.4 320 24 320h88l0-288c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32l0 288h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H416c10.3 0 19.9 4.9 26 13.3s7.7 19.1 4.4 28.8L375.1 416H72.9L1.6 202.1C-1.6 192.4 0 181.6 6 173.3s15.7-13.3 26-13.3H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM32 480c0-17.7 14.3-32 32-32H83.6 364.4 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128 64c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM216 192c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [576, 512, [\"tasks\"], \"f0ae\", \"M184.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 113c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM256 96c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zM192 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zM80 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 272c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zM268.3 308.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4s-16.6 20.4-29.4 17zM545 358.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [576, 512, [127938, \"snowboarding\"], \"f7ce\", \"M241.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H504c13.3 0 24 10.7 24 24s-10.7 24-24 24H475.8c-10.8 0-21.4-2-31.5-5.8L92.1 371.3c-11.5-4.4-22-11.2-30.8-20L39 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L224 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM171 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.4-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L171 350.1zM464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm368-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 448C150 448 64 362 64 256S150 64 256 64s192 86 192 192s-86 192-192 192zm0 64c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M224 0c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224zM64 160c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64H64V224h64V160H64z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V136zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M384 24c0-9.6 5.7-18.2 14.5-22s19-2 26 4.6l144 136c4.8 4.5 7.5 10.8 7.5 17.4s-2.7 12.9-7.5 17.4l-144 136c-7 6.6-17.2 8.4-26 4.6s-14.5-12.5-14.5-22V224H352 337.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C242.8 374.8 160 333.4 160 240c0-79.5 64.5-144 144-144h80V24zM0 144C0 99.8 35.8 64 80 64H96c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V416c0-17.7 14.3-32 32-32s32 14.3 32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V144z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 224c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [320, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 256c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm-26.7 32h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M296 88c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM321.6 192c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256c-44.2 0-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80s-35.8-80-80-80zM528 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [448, 512, [], \"e51e\", \"M222.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM384 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V64c0 8.8-7.2 16-16 16H320V95.5L410.3 160H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [576, 512, [], \"f575\", \"M118.6 9.4C106.1-3.1 85.9-3.1 73.4 9.4s-12.5 32.8 0 45.3L154.7 136 62.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L180.1 481.4c37.5 37.5 98.3 37.5 135.8 0L506.3 290.9c28.1-28.1 28.1-73.7 0-101.8L354.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L200 90.7 118.6 9.4zM200 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L245.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L461.1 234.3c3.1 3.1 3.1 8.2 0 11.3L418.7 288H99.5c1.4-5.4 4.2-10.4 8.4-14.6L200 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [384, 512, [9001], \"f053\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-3.1 11c-7.4-.3-14.9 .4-22.4 2.1c-9 2.1-17.8 4.4-26.2 7l-4.4-10.3c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l3.6 8.5c-16.5 7.1-31.5 15.1-45.2 23.9L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l5.8 8.7c-13.5 11.2-25.3 23.1-35.5 35.3l-10.1-8.1c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L66 155c-1.6 2.4-3.1 4.8-4.5 7.3c-7.1 11.8-12.8 23.2-17.4 34l-7.4-3c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l8.7 3.5c-.2 .8-.4 1.6-.7 2.3c-2.6 9.4-4.2 17.4-5.3 23.5c-.5 3.1-.9 5.7-1.2 7.7c-.1 1-.2 2-.3 2.7l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.4 2.8l0 0-29.4-2.7c-.3 3.8-.4 7.5-.3 11.2l-11 3.1C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l10.3-2.9c8 15.5 20.7 28.3 36.4 36.4L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l3.1-11c17.8 .8 34.7-4.1 48.8-13.2l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c6.8-10.6 11.3-22.9 12.7-36.2l.1-.6c.2-1.3 .7-3.8 1.7-7.4l.2-.6 9.4 4c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.5-3.6c7.5-11.1 18.7-23.7 36.5-34.5l1.6 5.6c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-3-10.6c5.2-1.7 10.7-3.2 16.6-4.6c9.7-2.2 18.5-6 26.4-11.1l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c9.1-14.3 14-31.2 13.2-48.8l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-10.3 2.9c-8.1-15.9-21-28.5-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3zM106.2 275.8l-37.1-3.4 0 0 37.1 3.4zM128 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm96-112c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm98.7 345c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l3.1-11c7.4 .3 14.9-.4 22.4-2.1c9-2.1 17.8-4.4 26.2-7l4.4 10.3c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-3.6-8.5c16.5-7.1 31.5-15.1 45.2-23.9L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-5.8-8.7c13.5-11.2 25.3-23.1 35.5-35.3l10.1 8.1c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574 357c1.6-2.4 3.1-4.8 4.5-7.3c7.1-11.8 12.8-23.2 17.4-34l7.4 3c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-8.7-3.5c.2-.8 .4-1.6 .7-2.3c2.6-9.4 4.2-17.4 5.3-23.5c.5-3.1 .9-5.7 1.2-7.7c.1-1 .2-2 .3-2.7l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.4-2.8l0 0 29.4 2.7c.3-3.8 .4-7.5 .3-11.2l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-10.3 2.9c-8-15.5-20.7-28.3-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.2 12.4l-3.1 11c-17.8-.8-34.7 4.1-48.8 13.2l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-6.8 10.6-11.3 22.9-12.7 36.2l-.1 .6c-.2 1.3-.7 3.8-1.7 7.4l-.2 .6-9.4-4c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.5 3.6c-7.5 11.1-18.7 23.7-36.5 34.5l-1.6-5.6c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l3 10.6c-5.2 1.7-10.7 3.2-16.6 4.6c-9.7 2.2-18.5 6-26.4 11.1l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-9.1 14.2-14 31.2-13.2 48.8l-11 3.1c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l10.3-2.9c8.1 15.9 21 28.5 36.4 36.4l-3 10.3zM570.9 239.5l0 0-37.1-3.4 37.1 3.4zM384 384c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M238.5 53.1C251 39.6 268.6 32 287 32c28.9 0 54.5 18.7 63.2 46.3L366 128.6c7.3 23 25.2 41 48.2 48.3l62.2 19.9c21.2 6.8 35.6 26.5 35.6 48.7c0 17.5-8.9 33.7-23.6 43.1l-85.9 54.8c-10.6 6.8-16.6 18.8-15.7 31.3l2.5 33.9c2.8 38.5-27.7 71.4-66.4 71.4c-13.6 0-26.9-4.2-38.1-12l-48.2-33.6c-14.8-10.3-32.3-15.8-50.3-15.8H170.2c-4.9 0-9.9 .4-14.8 1.2L83.9 432.1c-21.3 3.6-42.8-5.7-54.6-23.9c-11.8-18.1-11.8-41.4 0-59.4L56.5 307c4.9-7.5 7.5-16.3 7.5-25.3c0-9.9-3.2-19.5-9-27.4L11.3 194.6C-6.5 170.3-.7 136.2 24.2 119.2c9.7-6.6 21.2-9.8 32.9-9.1l80.6 4.6c26.1 1.5 51.5-8.7 69.4-27.9l31.5-33.8zM160 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM288 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 368c-61.9 0-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112s-50.1 112-112 112zm0 64c97.2 0 176-78.8 176-176s-78.8-176-176-176S16 158.8 16 256s78.8 176 176 176z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [384, 512, [9002], \"f054\", \"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM32 128V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm112 32V320H96V192h96z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 400c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 512c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm336-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 320c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48zm-48-80c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zM160 64c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM224 240c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm256 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128c0-35.3-28.7-64-64-64S0 92.7 0 128s28.7 64 64 64s64-28.7 64-64zM384 384c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM240 400c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM80 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [448, 512, [], \"e4f5\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm51 297.5L98.4 64H349.6L333 297.5 320 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM288 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C193.7 125.9 160 172 160 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 416c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM48 304c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm464-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM142.9 437c18.7-18.7 18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zm0-294.2c18.7-18.7 18.7-49.1 0-67.9S93.7 56.2 75 75s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zM369.1 437c18.7 18.7 49.1 18.7 67.9 0s18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H480c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm152 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.7 8.4 166.9 8 160 8s-13.7 .4-20.4 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM208 176c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 400c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM448 208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm128 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM272 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM144 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM576 336c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-48-80c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M287.6 .1c-19.7 0-38.3 9.1-50.4 24.6L205.9 64.9c-17.9 23-46 35.6-75.1 33.7L59.1 94c-13.5-.9-26.9 3.2-37.7 11.6C-1.3 123.2-6.7 155.2 8.8 179.4l44.5 69.2c7.1 11 10.8 23.8 10.8 36.8c0 11.9-3.1 23.5-9 33.8L27.4 367.7c-10 17.5-10 39.1 0 56.6c12.1 21.2 36.4 32.3 60.4 27.7l67-13c5.5-1.1 11.2-1.6 16.8-1.6H180c20.9 0 41 7.4 56.9 20.9l45 38.2c11.8 10 26.9 15.6 42.4 15.6c37.8 0 67.7-31.9 65.4-69.6l-3.1-50.6c-1-16.8 6.6-32.9 20.1-42.8l82.5-60.2c14.2-10.4 22.7-27 22.7-44.6c0-23.2-14.5-43.9-36.3-51.8l-58.2-21.2c-24.4-8.9-42.9-29.1-49.7-54.2L349.3 47.4C341.8 19.5 316.5 .1 287.6 .1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224c0 61.9 50.1 112 112 112s112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80c0-26.5-21.5-48-48-48S0 53.5 0 80s21.5 48 48 48s48-21.5 48-48zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v80c-26.5 0-48 21.5-48 48s21.5 48 48 48v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V304c26.5 0 48-21.5 48-48s-21.5-48-48-48V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M48 32C21.5 32 0 53.5 0 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm80 64v64H64V96h64zM48 288c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48zm80 64v64H64V352h64zM256 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H304c-26.5 0-48 21.5-48 48zm64 16h64v64H320V96zm32 352v32h32V448H352zm96 0H416v32h32V448zM416 288v32H352V288H256v96 96h64V384h32v32h96V352 320 288H416z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [640, 512, [\"arrow-right-from-file\"], \"f56e\", \"M32 64C32 28.7 60.7 0 96 0H256V128c0 17.7 14.3 32 32 32H416V288H248c-13.3 0-24 10.7-24 24s10.7 24 24 24H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM416 336V288H526.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H416zm0-208H288V0L416 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zm-52.3-49.3c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [640, 512, [], \"e580\", \"M152.1 41.8c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120 488 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L118.5 72l33.5-30.2zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm32-352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm64 0c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM200 384c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128s128-57.3 128-128zm328 0c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [129529], \"f51a\", \"M627.6 57.3c14-10.9 16.5-31 5.6-44.9s-31-16.5-44.9-5.6l-144 112-72 56-8.7 6.8-30.8-39.4c-3.7-4.8-9.8-7-15.8-5.8s-10.7 5.7-12.3 11.5l-12.5 46.3L371.1 295l48-.9c6.1-.1 11.5-3.7 14.1-9.1s1.9-11.9-1.8-16.7L403 231.9l8.6-6.7 72-56 144-112zM16.7 507.7c37.4 2.8 196.8 12 252.3-31.4c57.7-45.1 76.8-161.5 76.8-161.5L267.1 213.9s-117.6-9.6-175.3 35.5C69 267.1 50.5 304.1 36.3 344c-2.4 6.7 4.7 12.8 11 9.4L86.2 333c4.1-2.2 9.2-1.1 12 2.6s2.7 8.8-.4 12.3L24.4 430.4C13.2 442.9 5.5 458.1 2.4 474.5c-.9 4.8-1.6 8.9-2.2 12.1c-.9 5 .5 10.1 3.6 14.1s7.7 6.6 12.8 7z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM184 496H40c-13.3 0-24-10.7-24-24V328c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm88 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM480 144c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM512 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 160c44.2 0 80 35.8 80 80s-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80zM263.8 320c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [640, 512, [], \"f73c\", \"M513.2 0C449 0 395.5 46.5 385.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM399.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C273.3 114.6 242.8 96 208 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H399.9zM117.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0-48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 232c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M0 448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H224c-53 0-96-43-96-96V160H64c-35.3 0-64 28.7-64 64V448zm224-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.3 382.1c-5.4 12.3 8.7 21.6 21.1 16.4c22.4-9.5 47.4-14.8 73.7-14.8s51.3 5.3 73.7 14.8c12.4 5.2 26.5-4.1 21.1-16.4c-16-36.6-52.4-62.1-94.8-62.1s-78.8 25.6-94.8 62.1zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zM125.8 177.3L51.1 320H204.9L130.2 177.3c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3zM128 128c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 402.6 178.2 416 128 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 155c8.7-16.6 25.9-27 44.7-27zm384 48c-.9 0-1.7 .5-2.2 1.3L435.1 320H588.9L514.2 177.3c-.4-.8-1.3-1.3-2.2-1.3zm-44.7-21c8.7-16.6 25.9-27 44.7-27s36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 402.6 562.2 416 512 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 155z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.1-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm32-32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32H0zM32 64L58.6 46.2c-7.8-11.7-22.4-17-35.9-12.9S0 49.9 0 64l32 0zM224 352l-26.6 17.8c5.9 8.9 15.9 14.2 26.6 14.2s20.7-5.3 26.6-14.2L224 352zM416 64h32c0-14.1-9.2-26.5-22.7-30.6s-28.1 1.1-35.9 12.9L416 64zM384 448c0 17.7 14.3 32 32 32s32-14.3 32-32H384zM64 448V64H0V448H64zM5.4 81.8l192 288 53.3-35.5-192-288L5.4 81.8zm245.3 288l192-288L389.4 46.2l-192 288 53.3 35.5zM384 64V448h64V64H384z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.7 .9 4 1.4l0 0 0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [10003, 10004], \"f00c\", \"M470.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 338.7 425.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm272 32V320H96V192H352z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [384, 512, [9994, \"fist-raised\"], \"f6de\", \"M160 0c17.7 0 32 14.3 32 32V144H128V32c0-17.7 14.3-32 32-32zM32 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H32V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L37.5 357.5C13.5 333.5 0 300.9 0 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 128c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM256 192c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm72 80c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.6-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C87.5 32 35.1 48.6 9 59.9c-5.6 2.4-9 8-9 14V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V73.9c0-6.1-3.4-11.6-9-14C540.9 48.6 488.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.3-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.7-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-10-20.7-26.1-38-46.4-49.2c17 27.1 11 62.8-14 82.6c14.1 14.6 19.1 35.9 13.1 55.2c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-6-19.4-1-40.5 13.1-55.2c-25-19.9-31-55.5-14-82.6c-20.1 11.2-36.4 28.5-46.4 49.2l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M304 32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM192 112c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-32 16c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zM368 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [256, 512, [], \"e4c4\", \"M64 0C50.7 0 40 10.7 40 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C21.7 174.1 0 212.5 0 256V448c0 35.3 28.7 64 64 64H192c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H72l0 0 0 0L64 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C153.9 288.9 176 320.2 176 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L277.3 424.9l-40.1 74.5c-5.2 9.7-16.3 14.6-27 11.9S192 499 192 488V392c0-5.3 1.8-10.5 5.1-14.7L362.4 164.7c2.5-7.1-6.5-14.3-13-8.4L170.4 318.2l-32 28.9 0 0c-9.2 8.3-22.3 10.6-33.8 5.8l-85-35.4C8.4 312.8 .8 302.2 .1 290s5.5-23.7 16.1-29.8l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm91 .5c33.7-43.3 53.8-97.8 53.8-157s-20.1-113.6-53.8-157l12.4-12.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L413 53.8C369.6 20.1 315.2 0 256 0S142.4 20.1 99 53.8L86.6 41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L53.8 99C20.1 142.4 0 196.8 0 256s20.1 113.6 53.8 157L41.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L99 458.2c43.3 33.7 97.8 53.8 157 53.8s113.6-20.1 157-53.8l12.4 12.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L458.2 413zm-45.7-45.7l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [512, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M154.9 162c.3 .7 .7 1.5 1.1 2.2l17.8 30.9c11.1-12.6 27.4-19.8 44.4-19.1l-20.7-35.8c-6.6-11.5-21.3-15.4-32.8-8.8c-10.8 6.2-14.9 19.5-9.9 30.6zm173.6 47C399.7 231.7 448 297.8 448 372.5c0 1.5 0 3-.1 4.5c39.7-25.6 64.1-69.7 64.1-117.4V136c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 81.7L347.8 16.5C341.2 5 326.5 1.1 315.1 7.7s-15.4 21.3-8.8 32.8l64 110.9c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9l-80-138.6C269.8 9.3 255.1 5.4 243.6 12s-15.4 21.3-8.8 32.8l80 138.6c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9L237 80.5c-6.6-11.5-21.3-15.4-32.8-8.8s-15.4 21.3-8.8 32.8l44 76.2L328.5 209zM64 488c0 12.4 9.4 22.6 21.5 23.9c.8 .1 1.6 .1 2.5 .1H288.7 296c66.3 0 120-53.7 120-120c0-1.2 0-2.4-.1-3.6c0-1.2 .1-2.5 .1-3.7c0-68-44-128.2-108.9-148.9l-83.9-26.7c-12.6-4-26.1 3-30.1 15.6s3 26.1 15.6 30.1L262.6 272H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H88c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zm40.4-192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M416 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M178.3 506.3L40.3 368.3C35 363 32 355.8 32 348.3C32 332.7 44.7 320 60.3 320H144V112c0-8.8-7.2-16-16-16H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0h96c61.9 0 112 50.1 112 112V320h83.7c15.6 0 28.3 12.7 28.3 28.3c0 7.5-3 14.7-8.3 20L205.7 506.3C202 510 197.1 512 192 512s-10-2-13.7-5.7z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M252.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-184 184c-15.6 15.6-15.6 40.9 0 56.6l184 184c15.6 15.6 40.9 15.6 56.6 0l184-184c15.6-15.6 15.6-40.9 0-56.6l-184-184zM248 224c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM96 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm128 80c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm128-80c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM224 72c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm96 392c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H472.5c13.4 26.9 8.8 60.5-13.6 82.9L320 413.8V464zm160-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM240 144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM296 208c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-72 72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H312z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H208V448h96v64H480c17.7 0 32-14.3 32-32s-14.3-32-32-32V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V112zM368 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM96 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V208zm144-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V208zm-3 152.2c3.3 12.8-7.8 23.8-21 23.8H184c-13.3 0-24.3-10.9-21-23.8c10.6-41.5 48.2-72.2 93-72.2s82.5 30.7 93 72.2z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM144.5 348.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM496 288c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM272 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 48c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-48c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM352 448c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm-80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm-80-16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M192 64L160 0H128L96 64 64 0H48C21.5 0 0 21.5 0 48V256H384V48c0-26.5-21.5-48-48-48H224L192 64zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 464c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm192 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0S112 64.5 112 144s64.5 144 144 144zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.7 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M122.4 1.2C127.6-.9 133.4-.2 137.9 3l70.3 50.3L278.5 3c4.5-3.2 10.3-3.9 15.4-1.8s8.8 6.7 9.7 12.2l14.1 85.3L403 112.8c5.4 .9 10.1 4.6 12.2 9.7s1.4 10.9-1.8 15.4l-38.8 54.3c-2.2-.1-4.3-.2-6.5-.2c-23.2 0-45 6.2-63.8 17c.1-12.5-2.2-25.3-7.3-37.6c-20.3-49-76.4-72.2-125.4-52s-72.2 76.4-52 125.4c18.3 44.3 66 67.5 111.1 56.6c-36.3 18.2-62.8 53.3-69.1 94.9l-23.6 16.9c-4.5 3.2-10.3 3.9-15.4 1.8s-8.8-6.7-9.7-12.2L98.7 317.7 13.4 303.6c-5.5-.9-10.1-4.6-12.2-9.7S-.2 282.9 3 278.5l50.3-70.3L3 137.9c-3.2-4.5-3.9-10.3-1.8-15.4s6.7-8.8 12.2-9.7L98.7 98.7l14.1-85.3c.9-5.5 4.6-10.1 9.7-12.2zM149 232.7c-13.5-32.7 2-70.1 34.6-83.6s70.1 2 83.6 34.6s-2 70.1-34.6 83.6s-70.1-2-83.6-34.6zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H290.7c17 0 33.3-6.7 45.3-18.7L429.3 368c12-12 18.7-28.3 18.7-45.3V96c0-35.3-28.7-64-64-64H64zm0 64H384V320H320c-17.7 0-32 14.3-32 32v64H64V96z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM303.6 208c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm-128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM64 480c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [448, 512, [], \"e4bb\", \"M224 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H416c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C331.4 52.6 280.1 32 224 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM100.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H32c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C20.6 148.6 0 199.9 0 256c0 10.9 .8 21.5 2.3 32H67.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM445.7 224H380.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H416c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C427.4 363.4 448 312.1 448 256c0-10.9-.8-21.5-2.3-32zM224 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H32c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C116.6 459.4 167.9 480 224 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zm-16-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [448, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M128 32c17.7 0 32 14.3 32 32V99.3L279.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C410.5 399.8 326.1 480 223.8 480H128c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c10.6 1.6 42.1 6.7 55.1 10c17.1 4.3 27.5 21.7 23.2 38.9s-21.7 27.5-38.9 23.2c-9.3-2.4-37.6-7-48.9-8.7c-32.1-4.8-59.6-2.4-78.5 4.9c-18.3 7-25.9 16.9-27.9 28c-1.9 10.7-.5 16.8 1.3 20.6c1.9 4 5.6 8.5 12.9 13.4c16.2 10.8 41.1 17.9 73.3 26.7l2.8 .8c28.4 7.7 63.2 17.2 89 34.3c14.1 9.4 27.3 22.1 35.5 39.7c8.3 17.8 10.1 37.8 6.3 59.1c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.2-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.4 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.7 .5-16.8-1.3-20.6c-1.9-4-5.6-8.5-12.9-13.4c-16.2-10.8-41.1-17.9-73.3-26.7l-2.8-.8c-28.4-7.7-63.2-17.2-89-34.3c-14.1-9.4-27.3-22.1-35.5-39.7c-8.3-17.8-10.1-37.8-6.3-59.1C25 114.1 53 89.3 86 76.7c13-5 27.2-8.2 42-10V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160c44.2 0 80-35.8 80-80s-35.8-80-80-80S64 35.8 64 80s35.8 80 80 80zm368 0c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM552 384c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8.1-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zm128-96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [640, 512, [], \"f0e9\", \"M320 0c17.7 0 32 14.3 32 32V49.7C483.8 63.4 589.7 161 605.9 285.9c2 15.6-17.3 24.4-27.8 12.7C564.1 283 536.8 272 512 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C391 299.5 358.7 272 320 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C199 299.5 166.7 272 128 272c-24.8 0-52.1 11-66.1 26.7c-10.5 11.7-29.8 2.9-27.8-12.7C50.3 161 156.2 63.4 288 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 64C0 46.3 14.3 32 32 32H160c123.7 0 224 100.3 224 224s-100.3 224-224 224H32c-17.7 0-32-14.3-32-32V64zM64 96V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160H64z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M399.3 509.7c-58.2-8.8-108.2-72.8-137.6-119.7c-20-31.9-25.1-70.3-19.6-107.7L266.3 118c1.4-9.8 5.1-19.2 12.9-25.2c20.2-15.6 72.4-41.5 185.1-24.5s155.2 57.4 170 78.3c5.7 8 6.5 18.1 5.1 27.9L615.2 338.8c-5.5 37.3-21.5 72.6-49.8 97.2c-41.7 36.1-108 82.5-166.1 73.7zm17.1-277.7c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8c4.4 3.1 10.8 2 11.8-3.3zm112.6 22.2c4.4 3.1 10.8 2 11.8-3.3c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8zm-11.5 85.2c-28.8 12.8-61.4 17.8-94.9 12.8s-63.2-19.5-87-40.3c-6.3-5.5-16.2-1.7-15.2 6.7c5.9 48.5 43 89.1 93 96.7s97.2-20.2 116.8-64.9c3.4-7.7-5-14.3-12.6-10.9zM240.7 446.9c-58.2 8.8-124.5-37.5-166.1-73.7c-28.3-24.5-44.3-59.8-49.8-97.2L.6 111.8C-.8 102 0 91.9 5.7 83.9C20.5 63 63 22.7 175.7 5.6s164.9 8.9 185.1 24.5c.9 .7 1.7 1.4 2.4 2.1c-52.8 4.8-85.1 21-103.6 35.3c-17 13.1-23 32-25 45.9L215.3 244.7c-2.6 .1-5.2 .4-7.9 .8c-35.2 5.3-61.8 32.7-68.2 66.3c-1.6 8.2 8.3 12.2 14.8 7c15.6-12.4 34.1-21.3 54.7-25.4c-3 38.4 4 78.7 25.9 113.6c6.9 11 15 23.1 24.2 35.4c-5.9 2.1-11.9 3.6-18 4.5zM174.1 157c-1-5.3-7.4-6.4-11.8-3.3c-7.7 5.5-16.8 9.3-26.8 10.8s-19.8 .6-28.7-2.4c-5.1-1.7-10.9 1.3-10.3 6.7c.1 .5 .1 1.1 .2 1.6c3.2 21.8 23.2 36.8 44.7 33.5s36.3-23.5 33.1-45.3c-.1-.5-.2-1.1-.3-1.6z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M178.3 5.7L40.3 143.7C35 149 32 156.2 32 163.7C32 179.3 44.7 192 60.3 192H144V400c0 8.8-7.2 16-16 16H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96c61.9 0 112-50.1 112-112V192h83.7c15.6 0 28.3-12.7 28.3-28.3c0-7.5-3-14.7-8.3-20L205.7 5.7C202 2 197.1 0 192 0s-10 2-13.7 5.7z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChildRifle: faChildRifle,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChildRifle, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","var prefix = \"far\";\nvar faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M160 400C160 408.8 152.8 416 144 416C135.2 416 128 408.8 128 400V192C128 183.2 135.2 176 144 176C152.8 176 160 183.2 160 192V400zM240 400C240 408.8 232.8 416 224 416C215.2 416 208 408.8 208 400V192C208 183.2 215.2 176 224 176C232.8 176 240 183.2 240 192V400zM320 400C320 408.8 312.8 416 304 416C295.2 416 288 408.8 288 400V192C288 183.2 295.2 176 304 176C312.8 176 320 183.2 320 192V400zM317.5 24.94L354.2 80H424C437.3 80 448 90.75 448 104C448 117.3 437.3 128 424 128H416V432C416 476.2 380.2 512 336 512H112C67.82 512 32 476.2 32 432V128H24C10.75 128 0 117.3 0 104C0 90.75 10.75 80 24 80H93.82L130.5 24.94C140.9 9.357 158.4 0 177.1 0H270.9C289.6 0 307.1 9.358 317.5 24.94H317.5zM151.5 80H296.5L277.5 51.56C276 49.34 273.5 48 270.9 48H177.1C174.5 48 171.1 49.34 170.5 51.56L151.5 80zM80 432C80 449.7 94.33 464 112 464H336C353.7 464 368 449.7 368 432V128H80V432z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faMessage = {\n prefix: 'far',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M447.1 0h-384c-35.25 0-64 28.75-64 63.1v287.1c0 35.25 28.75 63.1 64 63.1h96v83.98c0 9.836 11.02 15.55 19.12 9.7l124.9-93.68h144c35.25 0 64-28.75 64-63.1V63.1C511.1 28.75 483.2 0 447.1 0zM464 352c0 8.75-7.25 16-16 16h-160l-80 60v-60H64c-8.75 0-16-7.25-16-16V64c0-8.75 7.25-16 16-16h384c8.75 0 16 7.25 16 16V352z\"]\n};\nvar faCommentAlt = faMessage;\nvar faFileLines = {\n prefix: 'far',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM96 280C96 293.3 106.8 304 120 304h144C277.3 304 288 293.3 288 280S277.3 256 264 256h-144C106.8 256 96 266.8 96 280zM264 352h-144C106.8 352 96 362.8 96 376s10.75 24 24 24h144c13.25 0 24-10.75 24-24S277.3 352 264 352z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCalendarDays = {\n prefix: 'far',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 248H128V192H48V248zM48 296V360H128V296H48zM176 296V360H272V296H176zM320 296V360H400V296H320zM400 192H320V248H400V192zM400 408H320V464H384C392.8 464 400 456.8 400 448V408zM272 408H176V464H272V408zM128 408H48V448C48 456.8 55.16 464 64 464H128V408zM272 192H176V248H272V192z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M320 408c0-6.428-.8457-12.66-2.434-18.6C338.2 376.7 352 353.9 352 328c0-6.428-.8457-12.66-2.434-18.6C370.2 296.7 384 273.9 384 248c0-2.705-.1484-5.373-.4414-8H440C479.7 240 512 207.7 512 168S479.7 96 440 96H243.7C227.5 76.51 203.2 64 176 64H126.1C94.02 64 64.47 81.1 49 108.6L17.65 164.5C6.104 185.1 0 208.4 0 231.8v107.9C0 417.1 64.6 480 144 480h104C287.7 480 320 447.7 320 408zM280 304c13.23 0 24 10.78 24 24S293.2 352 280 352H232.1C218.9 352 208 341.2 208 328S218.8 304 232 304H280zM312 224c13.23 0 24 10.78 24 24S325.2 272 312 272h-48c-3.029 0-5.875-.7012-8.545-1.73C260.7 259.9 264 248.4 264 236V224H312zM440 144c13.23 0 24 10.78 24 24S453.2 192 440 192h-176V152c0-2.686-.5566-5.217-.793-7.84C263.5 144.2 263.7 144 264 144H440zM48 339.7V231.8c0-15.25 3.984-30.41 11.52-43.88l31.34-55.78C97.84 119.7 111.4 112 126.1 112H176c22.06 0 40 17.94 40 40v84c0 15.44-12.56 28-28 28S160 251.4 160 236V184C160 170.8 149.3 160 136 160S112 170.8 112 184v52c0 33.23 21.58 61.25 51.36 71.54C161.3 314 160 320.9 160 328c0 5.041 1.166 9.836 2.178 14.66C137.4 354 120 378.1 120 408c0 7.684 1.557 14.94 3.836 21.87C80.56 420.9 48 383.9 48 339.7zM192 432c-13.23 0-24-10.78-24-24S178.8 384 192 384h56c13.23 0 24 10.78 24 24s-10.77 24-24 24H192z\"]\n};\nvar faFaceSmileBeam = {\n prefix: 'far',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFaceGrinStars = {\n prefix: 'far',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M199.8 167.3L237.9 172.3C240.1 172.7 243.5 174.8 244.5 177.8C245.4 180.7 244.6 183.9 242.4 186L214.5 212.5L221.5 250.3C222 253.4 220.8 256.4 218.3 258.2C215.8 260.1 212.5 260.3 209.8 258.8L175.1 240.5L142.2 258.8C139.5 260.3 136.2 260.1 133.7 258.2C131.2 256.4 129.1 253.4 130.5 250.3L137.5 212.5L109.6 186C107.4 183.9 106.6 180.7 107.5 177.8C108.5 174.8 111 172.7 114.1 172.3L152.2 167.3L168.8 132.6C170.1 129.8 172.9 128 175.1 128C179.1 128 181.9 129.8 183.2 132.6L199.8 167.3zM359.8 167.3L397.9 172.3C400.1 172.7 403.5 174.8 404.5 177.8C405.4 180.7 404.6 183.9 402.4 186L374.5 212.5L381.5 250.3C382 253.4 380.8 256.4 378.3 258.2C375.8 260.1 372.5 260.3 369.8 258.8L336 240.5L302.2 258.8C299.5 260.3 296.2 260.1 293.7 258.2C291.2 256.4 289.1 253.4 290.5 250.3L297.5 212.5L269.6 186C267.4 183.9 266.6 180.7 267.5 177.8C268.5 174.8 271 172.7 274.1 172.3L312.2 167.3L328.8 132.6C330.1 129.8 332.9 128 336 128C339.1 128 341.9 129.8 343.2 132.6L359.8 167.3zM349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M272 288h-64C163.8 288 128 323.8 128 368C128 376.8 135.2 384 144 384h192c8.836 0 16-7.164 16-16C352 323.8 316.2 288 272 288zM240 256c35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64S204.7 256 240 256zM496 320H480v96h16c8.836 0 16-7.164 16-16v-64C512 327.2 504.8 320 496 320zM496 64H480v96h16C504.8 160 512 152.8 512 144v-64C512 71.16 504.8 64 496 64zM496 192H480v96h16C504.8 288 512 280.8 512 272v-64C512 199.2 504.8 192 496 192zM384 0H96C60.65 0 32 28.65 32 64v384c0 35.35 28.65 64 64 64h288c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM400 448c0 8.836-7.164 16-16 16H96c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h288c8.836 0 16 7.162 16 16V448z\"]\n};\nvar faContactBook = faAddressBook;\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 0C322.9 0 416 78.8 416 176C416 273.2 322.9 352 208 352C189.3 352 171.2 349.7 153.9 345.8C123.3 364.8 79.13 384 24.95 384C14.97 384 5.93 378.1 2.018 368.9C-1.896 359.7-.0074 349.1 6.739 341.9C7.26 341.5 29.38 317.4 45.73 285.9C17.18 255.8 0 217.6 0 176C0 78.8 93.13 0 208 0zM164.6 298.1C179.2 302.3 193.8 304 208 304C296.2 304 368 246.6 368 176C368 105.4 296.2 48 208 48C119.8 48 48 105.4 48 176C48 211.2 65.71 237.2 80.57 252.9L104.1 277.8L88.31 308.1C84.74 314.1 80.73 321.9 76.55 328.5C94.26 323.4 111.7 315.5 128.7 304.1L145.4 294.6L164.6 298.1zM441.6 128.2C552 132.4 640 209.5 640 304C640 345.6 622.8 383.8 594.3 413.9C610.6 445.4 632.7 469.5 633.3 469.9C640 477.1 641.9 487.7 637.1 496.9C634.1 506.1 625 512 615 512C560.9 512 516.7 492.8 486.1 473.8C468.8 477.7 450.7 480 432 480C350 480 279.1 439.8 245.2 381.5C262.5 379.2 279.1 375.3 294.9 369.9C322.9 407.1 373.9 432 432 432C446.2 432 460.8 430.3 475.4 426.1L494.6 422.6L511.3 432.1C528.3 443.5 545.7 451.4 563.5 456.5C559.3 449.9 555.3 442.1 551.7 436.1L535.9 405.8L559.4 380.9C574.3 365.3 592 339.2 592 304C592 237.7 528.7 183.1 447.1 176.6L448 176C448 159.5 445.8 143.5 441.6 128.2H441.6z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M502.6 198.6l-61.25-61.25C435.4 131.4 427.3 128 418.8 128H256C220.7 128 191.1 156.7 192 192l.0065 255.1C192 483.3 220.7 512 256 512h192c35.2 0 64-28.8 64-64l.0098-226.7C512 212.8 508.6 204.6 502.6 198.6zM464 448c0 8.836-7.164 16-16 16h-192c-8.838 0-16-7.164-16-16L240 192.1c0-8.836 7.164-16 16-16h128L384 224c0 17.67 14.33 32 32 32h48.01V448zM317.7 96C310.6 68.45 285.8 48 256 48H215.2C211.3 20.93 188.1 0 160 0C131.9 0 108.7 20.93 104.8 48H64c-35.35 0-64 28.65-64 64V384c0 35.34 28.65 64 64 64h96v-48H64c-8.836 0-16-7.164-16-16V112C48 103.2 55.18 96 64 96h16v16c0 17.67 14.33 32 32 32h61.35C190 115.4 220.6 96 256 96H317.7zM160 72c-8.822 0-16-7.176-16-16s7.178-16 16-16s16 7.176 16 16S168.8 72 160 72z\"]\n};\nvar faFileClipboard = faPaste;\nvar faFaceGrinTongueSquint = {\n prefix: 'far',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1V157.1zM378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V392.7C135.1 375.1 116.9 351.3 105.2 323.5C100.2 311.7 112.2 301 124.5 304.8C164.1 316.9 208.9 323.8 256.3 323.8C303.7 323.8 348.4 316.9 388.1 304.8C400.4 301 412.4 311.7 407.4 323.5C395.6 351.5 376.3 375.5 352 393.1V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 255.1C464 141.1 370.9 47.1 256 47.1L256 48zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faFaceFlushed = {\n prefix: 'far',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M320 336C333.3 336 344 346.7 344 360C344 373.3 333.3 384 320 384H192C178.7 384 168 373.3 168 360C168 346.7 178.7 336 192 336H320zM136.4 224C136.4 210.7 147.1 200 160.4 200C173.6 200 184.4 210.7 184.4 224C184.4 237.3 173.6 248 160.4 248C147.1 248 136.4 237.3 136.4 224zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 197.5 186.5 176 160 176C133.5 176 112 197.5 112 224C112 250.5 133.5 272 160 272zM376.4 224C376.4 237.3 365.6 248 352.4 248C339.1 248 328.4 237.3 328.4 224C328.4 210.7 339.1 200 352.4 200C365.6 200 376.4 210.7 376.4 224zM432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224zM352 176C325.5 176 304 197.5 304 224C304 250.5 325.5 272 352 272C378.5 272 400 250.5 400 224C400 197.5 378.5 176 352 176zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faSquareCaretRight = {\n prefix: 'far',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M200.3 142.4C193.3 135.9 183.1 134.2 174.4 138C165.7 141.8 160 150.5 160 159.1v192C160 361.5 165.7 370.2 174.4 374c8.719 3.812 18.91 2.094 25.91-4.375l104-96C309.2 269.1 312 262.7 312 256s-2.812-13.09-7.719-17.62L200.3 142.4zM384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faSquareMinus = {\n prefix: 'far',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M312 232C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H312zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M306.7 325.1L162.4 380.6C142.1 388.1 123.9 369 131.4 349.6L186.9 205.3C190.1 196.8 196.8 190.1 205.3 186.9L349.6 131.4C369 123.9 388.1 142.1 380.6 162.4L325.1 306.7C321.9 315.2 315.2 321.9 306.7 325.1V325.1zM255.1 224C238.3 224 223.1 238.3 223.1 256C223.1 273.7 238.3 288 255.1 288C273.7 288 288 273.7 288 256C288 238.3 273.7 224 255.1 224V224zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'far',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M320 192H128C118.5 192 109.8 197.7 105.1 206.4C102.2 215.1 103.9 225.3 110.4 232.3l96 104C210.9 341.2 217.3 344 224 344s13.09-2.812 17.62-7.719l96-104c6.469-7 8.188-17.19 4.375-25.91C338.2 197.7 329.5 192 320 192zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFaceKissBeam = {\n prefix: 'far',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M304.7 297.7C308.9 302.8 312 309.1 312 316C312 322.9 308.9 329.2 304.7 334.3C300.4 339.5 294.5 344 287.9 347.7C285.2 349.3 282.3 350.7 279.2 352C282.3 353.3 285.2 354.7 287.9 356.3C294.5 359.1 300.4 364.5 304.7 369.7C308.9 374.8 312 381.1 312 388C312 394.9 308.9 401.2 304.7 406.3C300.4 411.5 294.5 416 287.9 419.7C274.7 427.1 257.4 432 240 432C236.4 432 233.2 429.5 232.3 426C231.3 422.5 232.9 418.8 236.1 417L236.1 417L236.3 416.9C236.5 416.8 236.8 416.6 237.2 416.3C238 415.9 239.2 415.1 240.6 414.2C243.4 412.4 247.2 409.7 250.8 406.6C254.6 403.5 258 400 260.5 396.6C262.1 393 264 390.2 264 388C264 385.8 262.1 382.1 260.5 379.4C258 375.1 254.6 372.5 250.8 369.4C247.2 366.3 243.4 363.6 240.6 361.8C239.2 360.9 238 360.1 237.2 359.7C236.8 359.4 236.5 359.2 236.3 359.1L236.1 358.1L236.1 358.1C233.6 357.6 232 354.9 232 352C232 349.1 233.6 346.4 236.1 345L236.1 345L236.3 344.9C236.5 344.8 236.8 344.6 237.2 344.3C238 343.9 239.2 343.1 240.6 342.2C243.4 340.4 247.2 337.7 250.8 334.6C254.6 331.5 258 328.1 260.5 324.6C262.1 321 264 318.2 264 316C264 313.8 262.1 310.1 260.5 307.4C258 303.1 254.6 300.5 250.8 297.4C247.2 294.3 243.4 291.6 240.6 289.8C239.2 288.9 238 288.1 237.2 287.7C236.8 287.4 236.5 287.2 236.3 287.1L236.1 286.1L236.1 286.1C232.9 285.2 231.3 281.5 232.3 277.1C233.2 274.5 236.4 272 240 272C257.4 272 274.7 276.9 287.9 284.3C294.5 287.1 300.4 292.5 304.7 297.7L304.7 297.7zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM192 0C90.02 .3203 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.8 289.2 .0039 192 0zM288.4 260.1c-15.66 17.85-35.04 46.3-49.05 75.89h-94.61c-14.01-29.59-33.39-58.04-49.04-75.88C75.24 236.8 64 206.1 64 175.1C64 113.3 112.1 48.25 191.1 48C262.6 48 320 105.4 320 175.1C320 206.1 308.8 236.8 288.4 260.1zM176 80C131.9 80 96 115.9 96 160c0 8.844 7.156 16 16 16S128 168.8 128 160c0-26.47 21.53-48 48-48c8.844 0 16-7.148 16-15.99S184.8 80 176 80z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [512, 512, [127988, 61725], \"f024\", \"M476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87c-34.63 0-77.87 8.003-137.2 32.05V24C48 10.75 37.25 0 24 0S0 10.75 0 24v464C0 501.3 10.75 512 24 512s24-10.75 24-24v-104c53.59-23.86 96.02-31.81 132.8-31.81c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0zM464 319.8c-30.31 10.82-58.08 16.1-84.6 16.1c-30.8 0-58.31-7-87.44-14.41c-32.01-8.141-68.29-17.37-111.1-17.37c-42.35 0-85.99 9.09-132.8 27.73V84.14l18.03-7.301c47.39-19.2 86.38-28.54 119.2-28.54c28.24 .0039 49.12 6.711 73.31 14.48c25.38 8.148 54.13 17.39 90.58 17.39c35.43 0 72.24-8.496 114.9-26.61V319.8z\"]\n};\nvar faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M211.8 339.8C200.9 350.7 183.1 350.7 172.2 339.8L108.2 275.8C97.27 264.9 97.27 247.1 108.2 236.2C119.1 225.3 136.9 225.3 147.8 236.2L192 280.4L300.2 172.2C311.1 161.3 328.9 161.3 339.8 172.2C350.7 183.1 350.7 200.9 339.8 211.8L211.8 339.8zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faCircleDot = {\n prefix: 'far',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M160 256C160 202.1 202.1 160 256 160C309 160 352 202.1 352 256C352 309 309 352 256 352C202.1 352 160 309 160 256zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'far',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM103 135C112.4 125.7 127.6 125.7 136.1 135L160 158.1L183 135C192.4 125.7 207.6 125.7 216.1 135C226.3 144.4 226.3 159.6 216.1 168.1L193.9 192L216.1 215C226.3 224.4 226.3 239.6 216.1 248.1C207.6 258.3 192.4 258.3 183 248.1L160 225.9L136.1 248.1C127.6 258.3 112.4 258.3 103 248.1C93.66 239.6 93.66 224.4 103 215L126.1 192L103 168.1C93.66 159.6 93.66 144.4 103 135V135zM295 135C304.4 125.7 319.6 125.7 328.1 135L352 158.1L375 135C384.4 125.7 399.6 125.7 408.1 135C418.3 144.4 418.3 159.6 408.1 168.1L385.9 192L408.1 215C418.3 224.4 418.3 239.6 408.1 248.1C399.6 258.3 384.4 258.3 375 248.1L352 225.9L328.1 248.1C319.6 258.3 304.4 258.3 295 248.1C285.7 239.6 285.7 224.4 295 215L318.1 192L295 168.1C285.7 159.6 285.7 144.4 295 135V135zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M177.1 228.6L207.9 320h96.5l29.62-91.38L256 172.1L177.1 228.6zM255.1 0C114.6 0 .0001 114.6 .0001 256S114.6 512 256 512s255.1-114.6 255.1-255.1S397.4 0 255.1 0zM435.2 361.1l-103.9-1.578l-30.67 99.52C286.2 462.2 271.3 464 256 464s-30.19-1.773-44.56-4.93L180.8 359.6L76.83 361.1c-14.93-25.35-24.79-54.01-27.8-84.72L134.3 216.4L100.7 118.1c19.85-22.34 44.32-40.45 72.04-52.62L256 128l83.29-62.47c27.72 12.17 52.19 30.27 72.04 52.62L377.7 216.4l85.23 59.97C459.1 307.1 450.1 335.8 435.2 361.1z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M373.1 24.97C401.2-3.147 446.8-3.147 474.9 24.97L487 37.09C515.1 65.21 515.1 110.8 487 138.9L289.8 336.2C281.1 344.8 270.4 351.1 258.6 354.5L158.6 383.1C150.2 385.5 141.2 383.1 135 376.1C128.9 370.8 126.5 361.8 128.9 353.4L157.5 253.4C160.9 241.6 167.2 230.9 175.8 222.2L373.1 24.97zM440.1 58.91C431.6 49.54 416.4 49.54 407 58.91L377.9 88L424 134.1L453.1 104.1C462.5 95.6 462.5 80.4 453.1 71.03L440.1 58.91zM203.7 266.6L186.9 325.1L245.4 308.3C249.4 307.2 252.9 305.1 255.8 302.2L390.1 168L344 121.9L209.8 256.2C206.9 259.1 204.8 262.6 203.7 266.6zM200 64C213.3 64 224 74.75 224 88C224 101.3 213.3 112 200 112H88C65.91 112 48 129.9 48 152V424C48 446.1 65.91 464 88 464H360C382.1 464 400 446.1 400 424V312C400 298.7 410.7 288 424 288C437.3 288 448 298.7 448 312V424C448 472.6 408.6 512 360 512H88C39.4 512 0 472.6 0 424V152C0 103.4 39.4 64 88 64H200z\"]\n};\nvar faEdit = faPenToSquare;\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.75 10.75 0 24 0H360C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24V24zM99.78 384H284.2C281 379.6 277.4 375.4 273.5 371.5L192 289.9L110.5 371.5C106.6 375.4 102.1 379.6 99.78 384H99.78zM284.2 128C296.1 110.4 304 89.03 304 66.98V48H80V66.98C80 89.03 87 110.4 99.78 128H284.2z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM189.8 123.5L235.8 159.5C258.3 139.9 287.8 128 320 128C390.7 128 448 185.3 448 256C448 277.2 442.9 297.1 433.8 314.7L487.6 356.9C521.1 322.8 545.9 283.1 558.6 256C544.1 225.1 518.4 183.5 479.9 147.7C438.8 109.6 385.2 79.1 320 79.1C269.5 79.1 225.1 97.73 189.8 123.5L189.8 123.5zM394.9 284.2C398.2 275.4 400 265.9 400 255.1C400 211.8 364.2 175.1 320 175.1C319.3 175.1 318.7 176 317.1 176C319.3 181.1 320 186.5 320 191.1C320 202.2 317.6 211.8 313.4 220.3L394.9 284.2zM404.3 414.5L446.2 447.5C409.9 467.1 367.8 480 320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3C31.18 260.4 31.18 251.6 34.46 243.7C44 220.8 60.29 191.2 83.09 161.5L120.8 191.2C102.1 214.5 89.76 237.6 81.45 255.1C95.02 286 121.6 328.5 160.1 364.3C201.2 402.4 254.8 432 320 432C350.7 432 378.8 425.4 404.3 414.5H404.3zM192 255.1C192 253.1 192.1 250.3 192.3 247.5L248.4 291.7C258.9 312.8 278.5 328.6 302 333.1L358.2 378.2C346.1 381.1 333.3 384 319.1 384C249.3 384 191.1 326.7 191.1 255.1H192z\"]\n};\nvar faHand = {\n prefix: 'far',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M408 80c-3.994 0-7.91 .3262-11.73 .9551c-9.586-28.51-36.57-49.11-68.27-49.11c-6.457 0-12.72 .8555-18.68 2.457C296.6 13.73 273.9 0 248 0C222.1 0 199.3 13.79 186.6 34.44C180.7 32.85 174.5 32 168.1 32C128.4 32 96.01 64.3 96.01 104v121.6C90.77 224.6 85.41 224 80.01 224c-.0026 0 .0026 0 0 0C36.43 224 0 259.2 0 304.1c0 20.29 7.558 39.52 21.46 54.45l81.25 87.24C141.9 487.9 197.4 512 254.9 512h33.08C393.9 512 480 425.9 480 320V152C480 112.3 447.7 80 408 80zM432 320c0 79.41-64.59 144-143.1 144H254.9c-44.41 0-86.83-18.46-117.1-50.96l-79.76-85.63c-6.202-6.659-9.406-15.4-9.406-23.1c0-22.16 18.53-31.4 31.35-31.4c8.56 0 17.1 3.416 23.42 10.18l26.72 28.69C131.8 312.7 133.9 313.4 135.9 313.4c4.106 0 8.064-3.172 8.064-8.016V104c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152C192 264.8 199.2 272 208 272s15.1-7.163 15.1-15.1L224 72c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v184C272 264.8 279.2 272 288 272s15.99-7.164 15.99-15.1l.0077-152.2c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152.2C352 264.8 359.2 272 368 272s15.1-7.163 15.1-15.1V152c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24V320z\"]\n};\nvar faHandPaper = faHand;\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M234.9 48.02c10.43 0 20.72 5.834 24.13 19.17l47.33 184.1c2.142 8.456 9.174 12.62 16.21 12.62c7.326 0 14.66-4.505 16.51-13.37l31.72-155.1c2.921-14.09 13.76-20.57 24.67-20.57c13.01 0 26.14 9.19 26.14 25.62c0 2.19-.2333 4.508-.7313 6.951l-28.48 139.2c-.2389 1.156-.3514 2.265-.3514 3.323c0 8.644 7.504 13.9 14.86 13.9c5.869 0 11.65-3.341 13.46-10.98l24.73-104.2c.2347-.9802 4.12-19.76 24.28-19.76c13.21 0 26.64 9.4 26.64 24.79c0 2.168-.2665 4.455-.8378 6.852l-48.06 204.7c-13.59 57.85-65.15 98.74-124.5 98.74l-48.79-.0234c-40.7-.0196-79.86-15.58-109.5-43.51l-75.93-71.55c-5.938-5.584-8.419-11.1-8.419-18.2c0-13.88 12.45-26.69 26.38-26.69c5.756 0 11.76 2.182 17.26 7.376l51.08 48.14c1.682 1.569 3.599 2.249 5.448 2.249c4.192 0 8.04-3.49 8.04-8.001c0-23.76-3.372-47.39-10.12-70.28L142 161.1C141.2 159.1 140.8 156.3 140.8 153.7c0-15.23 13.48-24.82 26.75-24.82c10.11 0 20.1 5.559 23.94 18.42l31.22 105.8c2.231 7.546 8.029 10.8 13.9 10.8c7.752 0 15.64-5.659 15.64-14.57c0-1.339-.1783-2.752-.562-4.23L209.3 80.06C208.7 77.45 208.3 74.97 208.3 72.62C208.3 57.33 221.7 48.02 234.9 48.02zM234.9 0C201.5 0 160.4 25.24 160.4 72.72c0 2.807 .1579 5.632 .4761 8.463C129.9 83.9 92.84 108.9 92.84 153.8c0 7.175 1.038 14.47 3.148 21.68l24.33 81.94C115.8 256.5 111.1 256 106.4 256C65.74 256 32 290.6 32 330.8c0 19.59 8.162 38.58 23.6 53.1l75.89 71.51c38.68 36.45 89.23 56.53 142.3 56.56L322.6 512c82.1 0 152.5-55.83 171.3-135.8l48.06-204.7C543.3 165.7 544 159.7 544 153.9c0-54.55-49.55-72.95-74.59-72.95c-.7689 0-1.534 .0117-2.297 .0352c-10.49-39.43-46.46-54.11-71.62-54.11c-34.1 0-64.45 24.19-71.63 58.83L319.2 108.5l-13.7-53.29C297.1 22.22 268.7 0 234.9 0z\"]\n};\nvar faFaceKiss = {\n prefix: 'far',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M304.7 281.7C308.9 286.8 312 293.1 312 300C312 306.9 308.9 313.2 304.7 318.3C300.4 323.5 294.5 328 287.9 331.7C285.2 333.3 282.3 334.7 279.2 336C282.3 337.3 285.2 338.7 287.9 340.3C294.5 343.1 300.4 348.5 304.7 353.7C308.9 358.8 312 365.1 312 372C312 378.9 308.9 385.2 304.7 390.3C300.4 395.5 294.5 400 287.9 403.7C274.7 411.1 257.4 416 240 416C236.4 416 233.2 413.5 232.3 410C231.3 406.5 232.9 402.8 236.1 401L236.1 401L236.3 400.9C236.5 400.8 236.8 400.6 237.2 400.3C238 399.9 239.2 399.1 240.6 398.2C243.4 396.4 247.2 393.7 250.8 390.6C254.6 387.5 258 384 260.5 380.6C262.1 377 264 374.2 264 372C264 369.8 262.1 366.1 260.5 363.4C258 359.1 254.6 356.5 250.8 353.4C247.2 350.3 243.4 347.6 240.6 345.8C239.2 344.9 238 344.1 237.2 343.7L236.5 343.2L236.3 343.1L236.1 342.1L236.1 342.1C233.6 341.6 232 338.9 232 336C232 333.1 233.6 330.4 236.1 329L236.1 329L236.3 328.9C236.5 328.8 236.8 328.6 237.2 328.3C238 327.9 239.2 327.1 240.6 326.2C243.4 324.4 247.2 321.7 250.8 318.6C254.6 315.5 258 312.1 260.5 308.6C262.1 305 264 302.2 264 300C264 297.8 262.1 294.1 260.5 291.4C258 287.1 254.6 284.5 250.8 281.4C247.2 278.3 243.4 275.6 240.6 273.8C239.2 272.9 238 272.1 237.2 271.7C236.8 271.4 236.5 271.2 236.3 271.1L236.1 270.1L236.1 270.1C232.9 269.2 231.3 265.5 232.3 261.1C233.2 258.5 236.4 256 240 256C257.4 256 274.7 260.9 287.9 268.3C294.5 271.1 300.4 276.5 304.7 281.7V281.7zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faKiss = faFaceKiss;\nvar faFaceGrinTongue = {\n prefix: 'far',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 255.1 48H256zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M296 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512h272C309.3 512 320 501.3 320 488S309.3 464 296 464zM0 304c0 51.63 30.12 85.25 64 96v32h48v-67.13l-33.5-10.63C63.75 349.5 48 333.9 48 304c0-84.1 93.2-206.5 112.6-206.5c19.63 0 60.01 67.18 70.28 85.8l-66.13 66.13c-3.125 3.125-4.688 7.219-4.688 11.31S161.6 268.9 164.8 272L176 283.2c3.125 3.125 7.219 4.688 11.31 4.688s8.188-1.562 11.31-4.688L253 229C264.4 256.8 272 283.5 272 304c0 29.88-15.75 45.5-30.5 50.25L208 364.9V432H256v-32c33.88-10.75 64-44.38 64-96c0-73.38-67.75-197.2-120.6-241.5C213.4 59.12 224 47 224 32c0-17.62-14.38-32-32-32H128C110.4 0 96 14.38 96 32c0 15 10.62 27.12 24.62 30.5C67.75 106.8 0 230.6 0 304z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'far',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faFaceGrinWide = {\n prefix: 'far',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM224 192C224 227.3 209.7 256 192 256C174.3 256 160 227.3 160 192C160 156.7 174.3 128 192 128C209.7 128 224 156.7 224 192zM288 192C288 156.7 302.3 128 320 128C337.7 128 352 156.7 352 192C352 227.3 337.7 256 320 256C302.3 256 288 227.3 288 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faFaceFrownOpen = {\n prefix: 'far',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M179.3 369.3C166.1 374.5 153.1 365.1 158.4 352.9C175.1 314.7 214.3 287.8 259.9 287.8C305.6 287.8 344.8 314.7 361.4 352.1C366.7 365.2 352.9 374.5 340.6 369.3C316.2 359 288.8 353.2 259.9 353.2C231 353.2 203.7 358.1 179.3 369.3L179.3 369.3zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [448, 512, [9757], \"f0a6\", \"M376 192c-6.428 0-12.66 .8457-18.6 2.434C344.7 173.8 321.9 160 296 160c-6.428 0-12.66 .8457-18.6 2.434C264.7 141.8 241.9 128 216 128C213.3 128 210.6 128.1 208 128.4V72C208 32.3 175.7 0 136 0S64 32.3 64 72v196.3C44.51 284.5 32 308.8 32 336v49.88c0 32.1 17.1 61.65 44.63 77.12l55.83 31.35C153.1 505.9 176.4 512 199.8 512h107.9C385.1 512 448 447.4 448 368V264C448 224.3 415.7 192 376 192zM272 232c0-13.23 10.78-24 24-24S320 218.8 320 232v47.91C320 293.1 309.2 304 296 304S272 293.2 272 280V232zM192 200C192 186.8 202.8 176 216 176s24 10.77 24 24v48c0 3.029-.7012 5.875-1.73 8.545C227.9 251.3 216.4 248 204 248H192V200zM112 72c0-13.23 10.78-24 24-24S160 58.77 160 72v176H120c-2.686 0-5.217 .5566-7.84 .793C112.2 248.5 112 248.3 112 248V72zM307.7 464H199.8c-15.25 0-30.41-3.984-43.88-11.52l-55.78-31.34C87.72 414.2 80 400.6 80 385.9V336c0-22.06 17.94-40 40-40h84c15.44 0 28 12.56 28 28S219.4 352 204 352H152C138.8 352 128 362.8 128 376s10.75 24 24 24h52c33.23 0 61.25-21.58 71.54-51.36C282 350.7 288.9 352 296 352c5.041 0 9.836-1.166 14.66-2.178C322 374.6 346.1 392 376 392c7.684 0 14.94-1.557 21.87-3.836C388.9 431.4 351.9 464 307.7 464zM400 320c0 13.23-10.78 24-24 24S352 333.2 352 320V264c0-13.23 10.78-24 24-24s24 10.77 24 24V320z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M336 0h-288C21.49 0 0 21.49 0 48v431.9c0 24.7 26.79 40.08 48.12 27.64L192 423.6l143.9 83.93C357.2 519.1 384 504.6 384 479.9V48C384 21.49 362.5 0 336 0zM336 452L192 368l-144 84V54C48 50.63 50.63 48 53.1 48h276C333.4 48 336 50.63 336 54V452z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [448, 512, [], \"f0a7\", \"M448 248V144C448 64.6 385.1 0 307.7 0H199.8C176.4 0 153.1 6.104 132.5 17.65L76.63 49C49.1 64.47 32 94.02 32 126.1V176c0 27.23 12.51 51.53 32 67.69V440C64 479.7 96.3 512 136 512s72-32.3 72-72v-56.44C210.6 383.9 213.3 384 216 384c25.95 0 48.73-13.79 61.4-34.43C283.3 351.2 289.6 352 296 352c25.95 0 48.73-13.79 61.4-34.43C363.3 319.2 369.6 320 376 320C415.7 320 448 287.7 448 248zM272 232c0-13.23 10.78-24 24-24S320 218.9 320 232.1V280c0 13.23-10.78 24-24 24S272 293.2 272 280V232zM192 264h12c12.39 0 23.93-3.264 34.27-8.545C239.3 258.1 240 260.1 240 264v48c0 13.23-10.78 24-24 24S192 325.2 192 312V264zM112 264c0-.2813 .1504-.5137 .1602-.793C114.8 263.4 117.3 264 120 264H160v176c0 13.23-10.78 24-24 24S112 453.2 112 440V264zM397.9 123.8C390.9 121.6 383.7 120 376 120c-29.04 0-53.96 17.37-65.34 42.18C305.8 161.2 301 160 296 160c-7.139 0-13.96 1.273-20.46 3.355C265.2 133.6 237.2 112 204 112H152C138.8 112 128 122.8 128 136S138.8 160 152 160h52c15.44 0 28 12.56 28 28S219.4 216 204 216H120C97.94 216 80 198.1 80 176V126.1c0-14.77 7.719-28.28 20.16-35.27l55.78-31.34C169.4 51.98 184.6 48 199.8 48h107.9C351.9 48 388.9 80.56 397.9 123.8zM400 248c0 13.23-10.78 24-24 24S352 261.2 352 248V192c0-13.23 10.78-24 24-24S400 178.8 400 192V248z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M447.1 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H63.1c-35.35 0-64 28.66-64 64v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C511.1 124.7 483.3 96 447.1 96zM463.1 416c0 8.824-7.178 16-16 16h-384c-8.822 0-16-7.176-16-16V96c0-8.824 7.178-16 16-16h117.5c4.273 0 8.293 1.664 11.31 4.688L255.1 144h192c8.822 0 16 7.176 16 16V416z\"]\n};\nvar faFolderBlank = faFolder;\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M272 304h-96C78.8 304 0 382.8 0 480c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32C448 382.8 369.2 304 272 304zM48.99 464C56.89 400.9 110.8 352 176 352h96c65.16 0 119.1 48.95 127 112H48.99zM224 256c70.69 0 128-57.31 128-128c0-70.69-57.31-128-128-128S96 57.31 96 128C96 198.7 153.3 256 224 256zM224 48c44.11 0 80 35.89 80 80c0 44.11-35.89 80-80 80S144 172.1 144 128C144 83.89 179.9 48 224 48z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'far',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416zM273.6 138c-8.719-3.812-18.91-2.094-25.91 4.375l-104 96C138.8 242.9 136 249.3 136 256s2.812 13.09 7.719 17.62l104 96c7 6.469 17.19 8.188 25.91 4.375C282.3 370.2 288 361.5 288 352V160C288 150.5 282.3 141.8 273.6 138z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z\"]\n};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [384, 512, [9822], \"f441\", \"M44 320.6l14.5 6.5c-17.01 20.24-26.44 45.91-26.44 72.35C32.06 399.7 32.12 432 32.12 432h48v-32c0-24.75 14-47.5 36.13-58.63l38.13-23.37c13.25-6.625 21.75-20.25 21.75-35.13v-58.75l-15.37 9C155.6 235.8 151.9 240.4 150.5 245.9L143 271c-2.25 7.625-8 13.88-15.38 16.75L117.1 292C114 293.3 110.7 293.9 107.4 293.9c-3.626 0-7.263-.7514-10.66-2.254L63.5 276.9C54.12 272.6 48 263.2 48 252.9V140.5c0-5.125 2.125-10.12 5.75-13.88l7.375-7.375L49.5 96C48.5 94.12 48 92 48 89.88C48 84.38 52.38 80 57.88 80h105c86.75 0 156.1 70.38 156.1 157.1V432h48.06l-.0625-194.9C367.9 124 276 32 162.9 32H57.88C25.88 32 0 57.88 0 89.88c0 8.5 1.75 16.88 5.125 24.62C1.75 122.8 0 131.6 0 140.5v112.4C0 282.2 17.25 308.8 44 320.6zM80.12 164c0 11 8.875 20 20 20c11 0 20-9 20-20s-9-20-20-20C89 144 80.12 153 80.12 164zM360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'far',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM223.4 178.6C234.1 184.3 234.1 199.7 223.4 205.4L133.5 253.3C125.6 257.6 116 251.8 116 242.9C116 240.1 116.1 237.4 118.8 235.2L154.8 192L118.8 148.8C116.1 146.6 116 143.9 116 141.1C116 132.2 125.6 126.4 133.5 130.7L223.4 178.6zM393.2 148.8L357.2 192L393.2 235.2C395 237.4 396 240.1 396 242.9C396 251.8 386.4 257.6 378.5 253.3L288.6 205.4C277.9 199.7 277.9 184.3 288.6 178.6L378.5 130.7C386.4 126.4 396 132.2 396 141.1C396 143.9 395 146.6 393.2 148.8V148.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faFaceLaugh = {\n prefix: 'far',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM304.4 192C304.4 174.3 318.7 160 336.4 160C354 160 368.4 174.3 368.4 192C368.4 209.7 354 224 336.4 224C318.7 224 304.4 209.7 304.4 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M572.6 270.3l-96 192C471.2 473.2 460.1 480 447.1 480H64c-35.35 0-64-28.66-64-64V96c0-35.34 28.65-64 64-64h117.5c16.97 0 33.25 6.742 45.26 18.75L275.9 96H416c35.35 0 64 28.66 64 64v32h-48V160c0-8.824-7.178-16-16-16H256L192.8 84.69C189.8 81.66 185.8 80 181.5 80H64C55.18 80 48 87.18 48 96v288l71.16-142.3C124.6 230.8 135.7 224 147.8 224h396.2C567.7 224 583.2 249 572.6 270.3z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M320 64h-49.61C262.1 27.48 230.7 0 192 0S121 27.48 113.6 64H64C28.65 64 0 92.66 0 128v320c0 35.34 28.65 64 64 64h256c35.35 0 64-28.66 64-64V128C384 92.66 355.3 64 320 64zM192 48c13.23 0 24 10.77 24 24S205.2 96 192 96S168 85.23 168 72S178.8 48 192 48zM336 448c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V128c0-8.82 7.178-16 16-16h18.26C80.93 117.1 80 122.4 80 128v16C80 152.8 87.16 160 96 160h192c8.836 0 16-7.164 16-16V128c0-5.559-.9316-10.86-2.264-16H320c8.822 0 16 7.18 16 16V448z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 112c30.88 0 56-25.12 56-56S286.9 0 256 0S199.1 25.12 199.1 56S225.1 112 256 112zM511.1 197.4c0-5.178-2.509-10.2-7.096-13.26L476.4 168.2c-2.5-1.75-5.497-2.62-8.497-2.62c-5.501 .125-10.63 2.87-13.75 7.245c-9.001 12-23.16 19.13-38.16 19.13c-3.125 0-6.089-.2528-9.089-.8778c-23.13-4.25-38.88-26.25-38.88-49.75C367.1 134 361.1 128 354.6 128h-38.75c-6.001 0-11.63 4-12.88 9.875C298.2 160.1 278.7 176 255.1 176c-22.75 0-42.25-15.88-47-38.12C207.7 132 202.2 128 196.1 128h-38.75C149.1 128 143.1 134 143.1 141.4c0 18.49-13.66 50.62-47.95 50.62c-15.13 0-29.3-7.118-38.3-19.24C54.6 168.4 49.66 165.7 44.15 165.6c-3 0-5.931 .8951-8.432 2.645l-28.63 16C2.509 187.2 0 192.3 0 197.4c0 2.438 .5583 4.901 1.72 7.185L109.9 432h53.13L69.85 236.4C78.35 238.8 87.11 240 95.98 240c2.432 0 56.83 1.503 84.76-52.5C198.1 210.5 226.6 224 255.9 224c29.38 0 57.01-13.38 75.26-36.25C336.1 197.6 360.6 240 416 240c8.751 0 17.5-1.125 26-3.5L349 432h53.13l108.1-227.4C511.4 202.3 511.1 199.8 511.1 197.4zM424 464H87.98c-13.26 0-24 10.75-24 23.1S74.72 512 87.98 512h336c13.26 0 24-10.75 24-23.1S437.3 464 424 464z\"]\n};\nvar faHandBackFist = {\n prefix: 'far',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M377.1 68.05C364.4 50.65 343.7 40 321.2 40h-13.53c-3.518 0-7.039 .2754-10.53 .8184C284.8 31.33 269.6 26 253.5 26H240c-3.977 0-7.904 .3691-11.75 1.084C216.7 10.71 197.6 0 176 0H160C124.7 0 96 28.65 96 64v49.71L63.04 143.3C43.3 160 32 184.6 32 210.9v78.97c0 32.1 17.11 61.65 44.65 77.12L112 386.9v101.1C112 501.3 122.7 512 135.1 512S160 501.3 160 488v-129.9c-1.316-.6543-2.775-.9199-4.062-1.639l-55.78-31.34C87.72 318.2 80 304.6 80 289.9V210.9c0-12.31 5.281-23.77 14.5-31.39L112 163.8V208C112 216.8 119.2 224 128 224s16-7.156 16-16V64c0-8.828 7.188-16 16-16h16C184.8 48 192 55.17 192 64v16c0 9.578 7.942 16.04 16.15 16.04c6.432 0 12.31-4.018 14.73-10.17C223.3 84.84 228.3 74 240 74h13.53c20.97 0 17.92 19.58 34.27 19.58c8.177 0 9.9-5.584 19.88-5.584h13.53c25.54 0 18.27 28.23 38.66 28.23c.1562 0 .3125-.002 .4668-.0078L375.4 116C388.1 116 400 127.7 400 142V272c0 36.15-19.54 67.32-48 83.69v132.3C352 501.3 362.7 512 375.1 512S400 501.3 400 488v-108.1C430.1 352.8 448 313.6 448 272V142C448 102.1 416.8 69.44 377.1 68.05z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'far',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M241.6 175.7C237.1 170.8 230.7 168 224 168S210.9 170.8 206.4 175.7l-96 104c-6.469 7-8.188 17.19-4.375 25.91C109.8 314.3 118.5 320 127.1 320h192c9.531 0 18.16-5.656 22-14.38c3.813-8.719 2.094-18.91-4.375-25.91L241.6 175.7zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32C37.25 32 48 42.75 48 56V408C48 421.3 58.75 432 72 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H72C32.24 480 0 447.8 0 408V56C0 42.75 10.75 32 24 32zM128 136C128 122.7 138.7 112 152 112H360C373.3 112 384 122.7 384 136C384 149.3 373.3 160 360 160H152C138.7 160 128 149.3 128 136zM296 208C309.3 208 320 218.7 320 232C320 245.3 309.3 256 296 256H152C138.7 256 128 245.3 128 232C128 218.7 138.7 208 152 208H296zM424 304C437.3 304 448 314.7 448 328C448 341.3 437.3 352 424 352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H424z\"]\n};\nvar faBarChart = faChartBar;\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 48H208C190.3 48 176 62.33 176 80V96H128V80C128 35.82 163.8 0 208 0H432C476.2 0 512 35.82 512 80V304C512 348.2 476.2 384 432 384H416V336H432C449.7 336 464 321.7 464 304V80C464 62.33 449.7 48 432 48zM320 128C355.3 128 384 156.7 384 192V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V192C0 156.7 28.65 128 64 128H320zM64 464H320C328.8 464 336 456.8 336 448V256H48V448C48 456.8 55.16 464 64 464z\"]\n};\nvar faSquarePlus = {\n prefix: 'far',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M200 344V280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H200V168C200 154.7 210.7 144 224 144C237.3 144 248 154.7 248 168V232H312C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H248V344C248 357.3 237.3 368 224 368C210.7 368 200 357.3 200 344zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M152 120c-26.51 0-48 21.49-48 48s21.49 48 48 48s48-21.49 48-48S178.5 120 152 120zM447.1 32h-384C28.65 32-.0091 60.65-.0091 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96C511.1 60.65 483.3 32 447.1 32zM463.1 409.3l-136.8-185.9C323.8 218.8 318.1 216 312 216c-6.113 0-11.82 2.768-15.21 7.379l-106.6 144.1l-37.09-46.1c-3.441-4.279-8.934-6.809-14.77-6.809c-5.842 0-11.33 2.529-14.78 6.809l-75.52 93.81c0-.0293 0 .0293 0 0L47.99 96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V409.3z\"]\n};\nvar faFolderClosed = {\n prefix: 'far',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C512 124.7 483.3 96 448 96zM64 80h117.5c4.273 0 8.293 1.664 11.31 4.688L256 144h192c8.822 0 16 7.176 16 16v32h-416V96C48 87.18 55.18 80 64 80zM448 432H64c-8.822 0-16-7.176-16-16V240h416V416C464 424.8 456.8 432 448 432z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M439.9 144.6c15.34-26.38 8.372-62.41-16.96-87.62c-25.21-25.32-61.22-32.26-87.61-16.95c-9.044 5.218-27.15 3.702-48.08 1.968c-50.78-4.327-127.4-10.73-207.6 69.56C-.6501 191.9 5.801 268.5 10.07 319.3c1.749 20.96 3.28 39.07-1.984 48.08c-15.35 26.4-8.357 62.45 16.92 87.57c16.26 16.37 37.05 25.09 56.83 25.09c10.89 0 21.46-2.64 30.83-8.092c9.013-5.249 27.12-3.718 48.08-1.968c50.69 4.233 127.4 10.7 207.6-69.56c80.27-80.28 73.82-156.9 69.56-207.7C436.2 171.8 434.7 153.7 439.9 144.6zM398.4 120.5c-12.87 22.09-10.67 48.41-8.326 76.25c4.155 49.3 8.841 105.2-55.67 169.7c-64.53 64.49-120.5 59.78-169.7 55.68c-27.85-2.328-54.12-4.53-76.26 8.311c-6.139 3.64-19.17 1.031-29.58-9.451c-10.39-10.33-12.95-23.35-9.372-29.49c12.87-22.09 10.67-48.41 8.326-76.25C53.72 265.1 49.04 210.1 113.5 145.5c48.27-48.27 91.71-57.8 131.2-57.8c13.28 0 26.12 1.078 38.52 2.125c27.9 2.359 54.17 4.561 76.26-8.311c6.123-3.577 19.18-1.031 29.49 9.357C399.4 101.2 402 114.4 398.4 120.5zM239.5 124.1c2.156 8.561-3.062 17.25-11.62 19.43C183.6 154.7 122.7 215.6 111.6 259.9C109.7 267.1 103.2 271.1 96.05 271.1c-1.281 0-2.593-.1562-3.905-.4687C83.58 269.3 78.4 260.6 80.52 252.1C94.67 195.8 163.8 126.7 220.1 112.5C228.8 110.4 237.3 115.5 239.5 124.1z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M506.1 127.1c-17.97-20.17-61.46-61.65-122.7-71.1c-22.5-3.354-45.39 3.606-63.41 18.21C302 60.47 279.1 53.42 256.5 56.86C176.8 69.17 126.7 136.2 124.6 139.1c-7.844 10.69-5.531 25.72 5.125 33.57c4.281 3.157 9.281 4.657 14.19 4.657c7.406 0 14.69-3.375 19.38-9.782c.4062-.5626 40.19-53.91 100.5-63.23c7.457-.9611 14.98 .67 21.56 4.483L227.2 168.2C214.8 180.5 207.1 196.1 207.1 214.5c0 17.5 6.812 33.94 19.16 46.29C239.5 273.2 255.9 279.1 273.4 279.1s33.94-6.813 46.31-19.19l11.35-11.35l124.2 100.9c2.312 1.875 2.656 5.251 .5 7.97l-27.69 35.75c-1.844 2.25-5.25 2.594-7.156 1.063l-22.22-18.69l-26.19 27.75c-2.344 2.875-5.344 3.563-6.906 3.719c-1.656 .1562-4.562 .125-6.812-1.719l-32.41-27.66L310.7 392.3l-2.812 2.938c-5.844 7.157-14.09 11.66-23.28 12.6c-9.469 .8126-18.25-1.75-24.5-6.782L170.3 319.8H96V128.3L0 128.3v255.6l64 .0404c11.74 0 21.57-6.706 27.14-16.14h60.64l77.06 69.66C243.7 449.6 261.9 456 280.8 456c2.875 0 5.781-.125 8.656-.4376c13.62-1.406 26.41-6.063 37.47-13.5l.9062 .8126c12.03 9.876 27.28 14.41 42.69 12.78c13.19-1.375 25.28-7.032 33.91-15.35c21.09 8.188 46.09 2.344 61.25-16.47l27.69-35.75c18.47-22.82 14.97-56.48-7.844-75.01l-120.3-97.76l8.381-8.382c9.375-9.376 9.375-24.57 0-33.94c-9.375-9.376-24.56-9.376-33.94 0L285.8 226.8C279.2 233.5 267.7 233.5 261.1 226.8c-3.312-3.282-5.125-7.657-5.125-12.31c0-4.688 1.812-9.064 5.281-12.53l85.91-87.64c7.812-7.845 18.53-11.75 28.94-10.03c59.75 9.22 100.2 62.73 100.6 63.29c3.088 4.155 7.264 6.946 11.84 8.376H544v175.1c0 17.67 14.33 32.05 31.1 32.05L640 384V128.1L506.1 127.1zM48 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99S64 327.2 64 336.1C64 344.8 56.75 352 48 352zM592 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99s16 7.117 16 15.99C608 344.8 600.8 352 592 352z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M507.9 196.4l-104-153.8C399.4 35.95 391.1 32 384 32H127.1C120 32 112.6 35.95 108.1 42.56l-103.1 153.8c-6.312 9.297-5.281 21.72 2.406 29.89l231.1 246.2C243.1 477.3 249.4 480 256 480s12.94-2.734 17.47-7.547l232-246.2C513.2 218.1 514.2 205.7 507.9 196.4zM382.5 96.59L446.1 192h-140.1L382.5 96.59zM256 178.9L177.6 80h156.7L256 178.9zM129.5 96.59L205.1 192H65.04L129.5 96.59zM256 421L85.42 240h341.2L256 421z\"]\n};\nvar faCirclePlay = {\n prefix: 'far',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M188.3 147.1C195.8 142.8 205.1 142.1 212.5 147.5L356.5 235.5C363.6 239.9 368 247.6 368 256C368 264.4 363.6 272.1 356.5 276.5L212.5 364.5C205.1 369 195.8 369.2 188.3 364.9C180.7 360.7 176 352.7 176 344V167.1C176 159.3 180.7 151.3 188.3 147.1V147.1zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faCircleCheck = {\n prefix: 'far',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M243.8 339.8C232.9 350.7 215.1 350.7 204.2 339.8L140.2 275.8C129.3 264.9 129.3 247.1 140.2 236.2C151.1 225.3 168.9 225.3 179.8 236.2L224 280.4L332.2 172.2C343.1 161.3 360.9 161.3 371.8 172.2C382.7 183.1 382.7 200.9 371.8 211.8L243.8 339.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'far',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M328 160h-144C170.8 160 160 170.8 160 184v144C160 341.2 170.8 352 184 352h144c13.2 0 24-10.8 24-24v-144C352 170.8 341.2 160 328 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M320 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h256c35.35 0 64-28.65 64-64V64C384 28.65 355.3 0 320 0zM336 448c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h64V64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V48h64c8.836 0 16 7.162 16 16V448zM192 288c35.35 0 64-28.65 64-64s-28.65-64-64-64C156.7 160 128 188.7 128 224S156.7 288 192 288zM224 320H160c-44.18 0-80 35.82-80 80C80 408.8 87.16 416 96 416h192c8.836 0 16-7.164 16-16C304 355.8 268.2 320 224 320z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'far',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM352 208c0-44.13-35.88-80-80-80L184 128c-13.25 0-24 10.75-24 24v208c0 13.25 10.75 24 24 24s24-10.75 24-24v-72h59.79l38.46 82.19C310.3 378.9 319 384 328 384c3.438 0 6.875-.7187 10.19-2.25c12-5.625 17.16-19.91 11.56-31.94l-34.87-74.5C337.1 261.1 352 236.3 352 208zM272 240h-64v-64h64c17.66 0 32 14.34 32 32S289.7 240 272 240z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M208 256c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 227.3 172.7 256 208 256zM464 232h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 232 464 232zM240 288h-64C131.8 288 96 323.8 96 368C96 376.8 103.2 384 112 384h192c8.836 0 16-7.164 16-16C320 323.8 284.2 288 240 288zM464 152h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 152 464 152zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faFaceTired = {\n prefix: 'far',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M176.5 320.3C196.1 302.1 223.8 288 256 288C288.2 288 315.9 302.1 335.5 320.3C354.5 338.1 368 362 368 384C368 389.4 365.3 394.4 360.8 397.4C356.2 400.3 350.5 400.8 345.6 398.7L328.4 391.1C305.6 381.2 280.9 376 256 376C231.1 376 206.4 381.2 183.6 391.1L166.4 398.7C161.5 400.8 155.8 400.3 151.2 397.4C146.7 394.4 144 389.4 144 384C144 362 157.5 338.1 176.5 320.3zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faTired = faFaceTired;\nvar faFontAwesome = {\n prefix: 'far',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.09 22.54-82.34 32-119.5 32c-62.82 0-86.6-32-149.3-32c-21.69 0-38.48 3.791-53.74 8.766C110.1 397.5 96 386.1 96 371.7v-.7461c0-9.275 5.734-17.6 14.42-20.86C129.1 342.8 150.2 336 179.2 336c62.73 0 86.51 32 149.3 32c25.5 0 42.85-4.604 71.47-14.7v-240C379.2 120.6 357.7 128 328.5 128c-.0039 0 .0039 0 0 0c-62.81 0-86.61-32-149.3-32C122.1 96 98.8 122.1 48 126.1V456C48 469.3 37.25 480 24 480S0 469.3 0 456V56C0 42.74 10.75 32 24 32S48 42.74 48 56v22.99C98.8 74.14 122.1 48 179.2 48c62.77 0 86.45 32 149.3 32C366.1 80 386.8 69.85 448 48z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faFaceSmileWink = {\n prefix: 'far',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM214.6 248C211.3 238.4 202.2 232 192 232s-19.25 6.406-22.62 16L144.7 318.1l-25.89-77.66C114.6 227.8 101 221.2 88.41 225.2C75.83 229.4 69.05 243 73.23 255.6l48 144C124.5 409.3 133.5 415.9 143.8 416c10.17 0 19.45-6.406 22.83-16L192 328.1L217.4 400C220.8 409.6 229.8 416 240 416c10.27-.0938 19.53-6.688 22.77-16.41l48-144c4.188-12.59-2.594-26.16-15.17-30.38c-12.61-4.125-26.2 2.594-30.36 15.19l-25.89 77.66L214.6 248z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM200 224H128C119.2 224 112 231.2 112 240v168c0 13.25 10.75 24 24 24S160 421.3 160 408v-32h44c44.21 0 79.73-37.95 75.69-82.98C276.1 253.2 240 224 200 224zM204 328H160V272h44c15.44 0 28 12.56 28 28S219.4 328 204 328z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M493.6 163c-24.88-19.62-45.5-35.37-164.3-121.6C312.7 29.21 279.7 0 256.4 0H255.6C232.3 0 199.3 29.21 182.6 41.38C63.88 127.6 43.25 143.4 18.38 163C6.75 172 0 186 0 200.8v247.2C0 483.3 28.65 512 64 512h384c35.35 0 64-28.67 64-64.01V200.8C512 186 505.3 172 493.6 163zM464 448c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V276.7l136.1 113.4C204.3 406.8 229.8 416 256 416s51.75-9.211 71.97-26.01L464 276.7V448zM464 214.2l-166.8 138.1c-23.19 19.28-59.34 19.27-82.47 .0156L48 214.2l.1055-13.48c23.24-18.33 42.25-32.97 162.9-120.6c3.082-2.254 6.674-5.027 10.63-8.094C229.4 65.99 246.7 52.59 256 48.62c9.312 3.973 26.62 17.37 34.41 23.41c3.959 3.066 7.553 5.84 10.76 8.186C421.6 167.7 440.7 182.4 464 200.8V214.2z\"]\n};\nvar faFileZipper = {\n prefix: 'far',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h48V64h64V48.13h48.01L224 128c0 17.67 14.33 32 32 32h79.1V448zM176 96h-64v32h64V96zM176 160h-64v32h64V160zM176 224h-64l-30.56 116.5C73.51 379.5 103.7 416 144.3 416c40.26 0 70.45-36.3 62.68-75.15L176 224zM160 368H128c-8.836 0-16-7.164-16-16s7.164-16 16-16h32c8.836 0 16 7.164 16 16S168.8 368 160 368z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 80H64C55.16 80 48 87.16 48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [512, 512, [10052, 10054], \"f2dc\", \"M484.4 294.4c1.715 6.402 .6758 12.89-2.395 18.21s-8.172 9.463-14.57 11.18l-31.46 8.43l32.96 19.03C480.4 357.8 484.4 372.5 477.8 384s-21.38 15.41-32.86 8.783l-32.96-19.03l8.43 31.46c3.432 12.81-4.162 25.96-16.97 29.39s-25.96-4.162-29.39-16.97l-20.85-77.82L280 297.6v84.49l56.97 56.97c9.375 9.375 9.375 24.56 0 33.94C332.3 477.7 326.1 480 320 480s-12.28-2.344-16.97-7.031L280 449.9V488c0 13.25-10.75 24-24 24s-24-10.75-24-24v-38.06l-23.03 23.03c-9.375 9.375-24.56 9.375-33.94 0s-9.375-24.56 0-33.94L232 382.1V297.6l-73.17 42.25l-20.85 77.82c-3.432 12.81-16.58 20.4-29.39 16.97s-20.4-16.58-16.97-29.39l8.43-31.46l-32.96 19.03C55.61 399.4 40.85 395.5 34.22 384s-2.615-26.16 8.859-32.79l32.96-19.03l-31.46-8.43c-12.81-3.432-20.4-16.58-16.97-29.39s16.58-20.4 29.39-16.97l77.82 20.85L208 255.1L134.8 213.8L57.01 234.6C44.2 238 31.05 230.4 27.62 217.6s4.162-25.96 16.97-29.39l31.46-8.432L43.08 160.8C31.61 154.2 27.6 139.5 34.22 128s21.38-15.41 32.86-8.785l32.96 19.03L91.62 106.8C88.18 93.98 95.78 80.83 108.6 77.39s25.96 4.162 29.39 16.97l20.85 77.82L232 214.4V129.9L175 72.97c-9.375-9.375-9.375-24.56 0-33.94s24.56-9.375 33.94 0L232 62.06V24C232 10.75 242.8 0 256 0s24 10.75 24 24v38.06l23.03-23.03c9.375-9.375 24.56-9.375 33.94 0s9.375 24.56 0 33.94L280 129.9v84.49l73.17-42.25l20.85-77.82c3.432-12.81 16.58-20.4 29.39-16.97c6.402 1.715 11.5 5.861 14.57 11.18s4.109 11.81 2.395 18.21l-8.43 31.46l32.96-19.03C456.4 112.6 471.2 116.5 477.8 128s2.615 26.16-8.859 32.78l-32.96 19.03l31.46 8.432c12.81 3.432 20.4 16.58 16.97 29.39s-16.58 20.4-29.39 16.97l-77.82-20.85L304 255.1l73.17 42.25l77.82-20.85C467.8 273.1 480.1 281.6 484.4 294.4z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M456 32h-304C121.1 32 96 57.13 96 88v320c0 13.22-10.77 24-24 24S48 421.2 48 408V112c0-13.25-10.75-24-24-24S0 98.75 0 112v296C0 447.7 32.3 480 72 480h352c48.53 0 88-39.47 88-88v-304C512 57.13 486.9 32 456 32zM464 392c0 22.06-17.94 40-40 40H139.9C142.5 424.5 144 416.4 144 408v-320c0-4.406 3.594-8 8-8h304c4.406 0 8 3.594 8 8V392zM264 272h-64C186.8 272 176 282.8 176 296S186.8 320 200 320h64C277.3 320 288 309.3 288 296S277.3 272 264 272zM408 272h-64C330.8 272 320 282.8 320 296S330.8 320 344 320h64c13.25 0 24-10.75 24-24S421.3 272 408 272zM264 352h-64c-13.25 0-24 10.75-24 24s10.75 24 24 24h64c13.25 0 24-10.75 24-24S277.3 352 264 352zM408 352h-64C330.8 352 320 362.8 320 376s10.75 24 24 24h64c13.25 0 24-10.75 24-24S421.3 352 408 352zM400 112h-192c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64C432 126.3 417.7 112 400 112z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'far',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M345.3 472.1C347.3 479.7 350.9 486.4 355.7 491.8C325.1 504.8 291.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 285.3 507.1 313.4 498 339.7C486.9 334.1 474.5 333.1 461.8 334.6C459.7 329.4 457 324.6 453.9 320.1C460.5 299.9 464 278.4 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C285.4 464 313.5 457.9 338.9 446.8L345.3 472.1zM288.7 334.3C284.4 339.5 278.5 344 271.9 347.7C269.2 349.3 266.3 350.7 263.2 352C266.3 353.3 269.2 354.7 271.9 356.3C278.5 359.1 284.4 364.5 288.7 369.7C292.9 374.8 296 381.1 296 388C296 394.9 292.9 401.2 288.7 406.3C284.4 411.5 278.5 416 271.9 419.7C258.7 427.1 241.4 432 224 432C220.4 432 217.2 429.5 216.3 426C215.3 422.5 216.9 418.8 220.1 417L220.1 417L220.3 416.9C220.5 416.8 220.8 416.6 221.2 416.3C222 415.9 223.2 415.1 224.6 414.2C227.4 412.4 231.2 409.7 234.8 406.6C238.6 403.5 242 400 244.5 396.6C246.1 393 248 390.2 248 388C248 385.8 246.1 382.1 244.5 379.4C242 375.1 238.6 372.5 234.8 369.4C231.2 366.3 227.4 363.6 224.6 361.8C223.2 360.9 222 360.1 221.2 359.7C220.8 359.4 220.5 359.2 220.3 359.1L220.1 358.1L220.1 358.1C217.6 357.6 216 354.9 216 352C216 349.1 217.6 346.4 220.1 345L220.1 345L220.3 344.9C220.5 344.8 220.8 344.6 221.2 344.3C222 343.9 223.2 343.1 224.6 342.2C227.4 340.4 231.2 337.7 234.8 334.6C238.6 331.5 242 328.1 244.5 324.6C246.1 321 248 318.2 248 316C248 313.8 246.1 310.1 244.5 307.4C242 303.1 238.6 300.5 234.8 297.4C231.2 294.3 227.4 291.6 224.6 289.8C223.2 288.9 222 288.1 221.2 287.7C220.8 287.4 220.5 287.2 220.3 287.1L220.1 286.1L220.1 286.1C216.9 285.2 215.3 281.5 216.3 277.1C217.2 274.5 220.4 272 224 272C241.4 272 258.7 276.9 271.9 284.3C278.5 287.1 284.4 292.5 288.7 297.7C292.9 302.8 296 309.1 296 316C296 322.9 292.9 329.2 288.7 334.3V334.3zM144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220zM439.4 373.3L459.5 367.6C481.7 361.4 504.6 375.2 510.6 398.4C516.5 421.7 503.3 445.6 481.1 451.8L396.1 475.6C387.5 478 378.6 472.9 376.3 464.2L353.4 374.9C347.5 351.6 360.7 327.7 382.9 321.5C405.2 315.3 428 329.1 433.1 352.3L439.4 373.3z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faStarHalfStroke = {\n prefix: 'far',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8zM287.1 384.7C291.9 384.7 295.7 385.6 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.1 79.09L287.1 384.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM229.1 233.3L192 280.9L154.9 233.3C146.8 222.8 131.8 220.9 121.3 229.1C110.8 237.2 108.9 252.3 117.1 262.8L161.6 320l-44.53 57.25c-8.156 10.47-6.25 25.56 4.188 33.69C125.7 414.3 130.8 416 135.1 416c7.156 0 14.25-3.188 18.97-9.25L192 359.1l37.06 47.65C233.8 412.8 240.9 416 248 416c5.125 0 10.31-1.656 14.72-5.062c10.44-8.125 12.34-23.22 4.188-33.69L222.4 320l44.53-57.25c8.156-10.47 6.25-25.56-4.188-33.69C252.2 220.9 237.2 222.8 229.1 233.3z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'far',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M64 0C90.86 0 113.9 16.55 123.3 40H324.7C334.1 16.55 357.1 0 384 0C419.3 0 448 28.65 448 64C448 90.86 431.5 113.9 408 123.3V228.7C431.5 238.1 448 261.1 448 288C448 323.3 419.3 352 384 352C357.1 352 334.1 335.5 324.7 312H123.3C113.9 335.5 90.86 352 64 352C28.65 352 0 323.3 0 288C0 261.1 16.55 238.1 40 228.7V123.3C16.55 113.9 0 90.86 0 64C0 28.65 28.65 0 64 0V0zM64 80C72.84 80 80 72.84 80 64C80 56.1 74.28 49.54 66.75 48.24C65.86 48.08 64.94 48 64 48C55.16 48 48 55.16 48 64C48 64.07 48 64.14 48 64.21C48.01 65.07 48.09 65.92 48.24 66.75C49.54 74.28 56.1 80 64 80zM384 48C383.1 48 382.1 48.08 381.2 48.24C373.7 49.54 368 56.1 368 64C368 72.84 375.2 80 384 80C391.9 80 398.5 74.28 399.8 66.75C399.9 65.86 400 64.94 400 64C400 55.16 392.8 48 384 48V48zM324.7 88H123.3C116.9 104 104 116.9 88 123.3V228.7C104 235.1 116.9 247.1 123.3 264H324.7C331.1 247.1 343.1 235.1 360 228.7V123.3C343.1 116.9 331.1 104 324.7 88zM400 288C400 287.1 399.9 286.1 399.8 285.2C398.5 277.7 391.9 272 384 272C375.2 272 368 279.2 368 288C368 295.9 373.7 302.5 381.2 303.8C382.1 303.9 383.1 304 384 304C392.8 304 400 296.8 400 288zM64 272C56.1 272 49.54 277.7 48.24 285.2C48.08 286.1 48 287.1 48 288C48 296.8 55.16 304 64 304L64.22 303.1C65.08 303.1 65.93 303.9 66.75 303.8C74.28 302.5 80 295.9 80 288C80 279.2 72.84 272 64 272zM471.3 248C465.8 235.9 457.8 225.2 448 216.4V200H516.7C526.1 176.5 549.1 160 576 160C611.3 160 640 188.7 640 224C640 250.9 623.5 273.9 600 283.3V388.7C623.5 398.1 640 421.1 640 448C640 483.3 611.3 512 576 512C549.1 512 526.1 495.5 516.7 472H315.3C305.9 495.5 282.9 512 256 512C220.7 512 192 483.3 192 448C192 421.1 208.5 398.1 232 388.7V352H280V388.7C296 395.1 308.9 407.1 315.3 424H516.7C523.1 407.1 535.1 395.1 552 388.7V283.3C535.1 276.9 523.1 264 516.7 248H471.3zM592 224C592 215.2 584.8 208 576 208C575.1 208 574.1 208.1 573.2 208.2C565.7 209.5 560 216.1 560 224C560 232.8 567.2 240 576 240C583.9 240 590.5 234.3 591.8 226.8C591.9 225.9 592 224.9 592 224zM240 448C240 456.8 247.2 464 256 464C256.9 464 257.9 463.9 258.8 463.8C266.3 462.5 272 455.9 272 448C272 439.2 264.8 432 256 432C248.1 432 241.5 437.7 240.2 445.2C240.1 446.1 240 447.1 240 448zM573.2 463.8C574.1 463.9 575.1 464 576 464C584.8 464 592 456.8 592 448C592 447.1 591.9 446.2 591.8 445.3L591.8 445.2C590.5 437.7 583.9 432 576 432C567.2 432 560 439.2 560 448C560 455.9 565.7 462.5 573.2 463.8V463.8z\"]\n};\nvar faCircleRight = {\n prefix: 'far',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M280.2 150.2C273.1 143.8 262.1 142.2 254.3 146.1S239.1 158.5 239.1 167.1l.002 56L152 224C138.8 224 128 234.8 128 248v16C128 277.3 138.8 288 152 288L240 287.1v56c0 9.531 5.656 18.16 14.38 22c8.75 3.812 18.91 2.094 25.91-4.375l96-88.75C381.2 268.3 384 261.9 384 255.2c-.3125-7.781-2.875-13.25-7.844-17.75L280.2 150.2zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faFaceRollingEyes = {\n prefix: 'far',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M168 376C168 362.7 178.7 352 192 352H320C333.3 352 344 362.7 344 376C344 389.3 333.3 400 320 400H192C178.7 400 168 389.3 168 376zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 209.7 201.7 196.8 191.8 188C191.9 189.3 192 190.6 192 192C192 209.7 177.7 224 160 224C142.3 224 128 209.7 128 192C128 190.6 128.1 189.3 128.2 188C118.3 196.8 112 209.7 112 224C112 250.5 133.5 272 160 272V272zM272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224zM352 272C378.5 272 400 250.5 400 224C400 209.7 393.7 196.8 383.8 188C383.9 189.3 384 190.6 384 192C384 209.7 369.7 224 352 224C334.3 224 320 209.7 320 192C320 190.6 320.1 189.3 320.2 188C310.3 196.8 304 209.7 304 224C304 250.5 325.5 272 352 272zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM48 115.8C38.18 106.1 32 94.22 32 80C32 53.49 53.49 32 80 32C94.22 32 106.1 38.18 115.8 48H460.2C469 38.18 481.8 32 496 32C522.5 32 544 53.49 544 80C544 94.22 537.8 106.1 528 115.8V396.2C537.8 405 544 417.8 544 432C544 458.5 522.5 480 496 480C481.8 480 469 473.8 460.2 464H115.8C106.1 473.8 94.22 480 80 480C53.49 480 32 458.5 32 432C32 417.8 38.18 405 48 396.2V115.8zM96 125.3V386.7C109.6 391.6 120.4 402.4 125.3 416H450.7C455.6 402.4 466.4 391.6 480 386.7V125.3C466.4 120.4 455.6 109.6 450.7 96H125.3C120.4 109.6 109.6 120.4 96 125.3z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M244 84L255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84C243.1 84 244 84.01 244 84L244 84zM255.1 163.9L210.1 117.1C188.4 96.28 157.6 86.4 127.3 91.44C81.55 99.07 48 138.7 48 185.1V190.9C48 219.1 59.71 246.1 80.34 265.3L256 429.3L431.7 265.3C452.3 246.1 464 219.1 464 190.9V185.1C464 138.7 430.4 99.07 384.7 91.44C354.4 86.4 323.6 96.28 301.9 117.1L255.1 163.9z\"]\n};\nvar faFaceSurprise = {\n prefix: 'far',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faCirclePause = {\n prefix: 'far',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M200 160C186.8 160 176 170.8 176 184v144C176 341.3 186.8 352 200 352S224 341.3 224 328v-144C224 170.8 213.3 160 200 160zM312 160C298.8 160 288 170.8 288 184v144c0 13.25 10.75 24 24 24s24-10.75 24-24v-144C336 170.8 325.3 160 312 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faCircleUp = {\n prefix: 'far',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M272.9 135.7C268.3 130.8 261.9 128 255.2 128C247.5 128.3 241.1 130.9 237.5 135.8l-87.25 96C143.8 238.9 142.2 249 146.1 257.7C149.9 266.4 158.5 272 167.1 272h56L224 360c0 13.25 10.75 24 24 24h16c13.25 0 23.1-10.75 23.1-24L287.1 272h56c9.531 0 18.16-5.656 22-14.38c3.811-8.75 2.092-18.91-4.377-25.91L272.9 135.7zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM171.5 259.5L136 296H92C85.38 296 80 301.4 80 308v56C80 370.7 85.38 376 92 376H136l35.5 36.5C179.1 420 192 414.8 192 404v-136C192 257.3 179.1 251.9 171.5 259.5zM235.1 260.7c-6.25 6.25-6.25 16.38 0 22.62C235.3 283.5 256 305.1 256 336c0 30.94-20.77 52.53-20.91 52.69c-6.25 6.25-6.25 16.38 0 22.62C238.2 414.4 242.3 416 246.4 416s8.188-1.562 11.31-4.688C258.1 410.1 288 380.5 288 336s-29.05-74.06-30.28-75.31C251.5 254.4 241.3 254.4 235.1 260.7z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM215.3 292c-4.68 0-9.051 2.34-11.65 6.234L164 357.8l-11.68-17.53C149.7 336.3 145.3 334 140.7 334c-4.682 0-9.053 2.34-11.65 6.234l-46.67 70c-2.865 4.297-3.131 9.82-.6953 14.37C84.09 429.2 88.84 432 93.1 432h196c5.163 0 9.907-2.844 12.34-7.395c2.436-4.551 2.17-10.07-.6953-14.37l-74.67-112C224.4 294.3 220 292 215.3 292zM128 288c17.67 0 32-14.33 32-32S145.7 224 128 224S96 238.3 96 256S110.3 288 128 288z\"]\n};\nvar faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM256 336c-18 0-32 14-32 32s13.1 32 32 32c17.1 0 32-14 32-32S273.1 336 256 336zM289.1 128h-51.1C199 128 168 159 168 198c0 13 11 24 24 24s24-11 24-24C216 186 225.1 176 237.1 176h51.1C301.1 176 312 186 312 198c0 8-4 14.1-11 18.1L244 251C236 256 232 264 232 272V288c0 13 11 24 24 24S280 301 280 288V286l45.1-28c21-13 34-36 34-60C360 159 329 128 289.1 128z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faFaceMehBlank = {\n prefix: 'far',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M160 256C160 185.3 217.3 128 288 128C358.7 128 416 185.3 416 256C416 326.7 358.7 384 288 384C217.3 384 160 326.7 160 256zM288 336C332.2 336 368 300.2 368 256C368 211.8 332.2 176 288 176C287.3 176 286.7 176 285.1 176C287.3 181.1 288 186.5 288 192C288 227.3 259.3 256 224 256C218.5 256 213.1 255.3 208 253.1C208 254.7 208 255.3 208 255.1C208 300.2 243.8 336 288 336L288 336zM95.42 112.6C142.5 68.84 207.2 32 288 32C368.8 32 433.5 68.84 480.6 112.6C527.4 156 558.7 207.1 573.5 243.7C576.8 251.6 576.8 260.4 573.5 268.3C558.7 304 527.4 355.1 480.6 399.4C433.5 443.2 368.8 480 288 480C207.2 480 142.5 443.2 95.42 399.4C48.62 355.1 17.34 304 2.461 268.3C-.8205 260.4-.8205 251.6 2.461 243.7C17.34 207.1 48.62 156 95.42 112.6V112.6zM288 80C222.8 80 169.2 109.6 128.1 147.7C89.6 183.5 63.02 225.1 49.44 256C63.02 286 89.6 328.5 128.1 364.3C169.2 402.4 222.8 432 288 432C353.2 432 406.8 402.4 447.9 364.3C486.4 328.5 512.1 286 526.6 256C512.1 225.1 486.4 183.5 447.9 147.7C406.8 109.6 353.2 80 288 80V80z\"]\n};\nvar faFaceSadCry = {\n prefix: 'far',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.1 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM297.9 230.6C289.9 223 289.5 210.4 297 202.3C311.6 186.8 332.3 180 351.6 180C370.1 180 391.7 186.8 406.2 202.3C413.8 210.4 413.4 223 405.3 230.6C397.2 238.1 384.6 237.7 377 229.7C371.6 223.8 362.3 220 351.6 220C340.1 220 331.7 223.8 326.2 229.7C318.7 237.7 306 238.1 297.9 230.6zM208 320C208 293.5 229.5 272 256 272C282.5 272 304 293.5 304 320V352C304 378.5 282.5 400 256 400C229.5 400 208 378.5 208 352V320zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM400 406.1C439.4 368.2 464 314.1 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 314.1 72.55 368.2 112 406.1V288C112 274.7 122.7 264 136 264C149.3 264 160 274.7 160 288V440.6C188.7 455.5 221.4 464 256 464C290.6 464 323.3 455.5 352 440.6V288C352 274.7 362.7 264 376 264C389.3 264 400 274.7 400 288V406.1z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M162.1 257.8c-7.812-7.812-20.47-7.812-28.28 0l-48 48c-7.812 7.812-7.812 20.5 0 28.31l48 48C137.8 386.1 142.9 388 148 388s10.23-1.938 14.14-5.844c7.812-7.812 7.812-20.5 0-28.31L128.3 320l33.86-33.84C169.1 278.3 169.1 265.7 162.1 257.8zM365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM221.9 257.8c-7.812 7.812-7.812 20.5 0 28.31L255.7 320l-33.86 33.84c-7.812 7.812-7.812 20.5 0 28.31C225.8 386.1 230.9 388 236 388s10.23-1.938 14.14-5.844l48-48c7.812-7.812 7.812-20.5 0-28.31l-48-48C242.3 250 229.7 250 221.9 257.8z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M7.724 65.49C13.36 55.11 21.79 46.47 32 40.56C39.63 36.15 48.25 33.26 57.46 32.33C59.61 32.11 61.79 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 93.79 .112 91.61 .3306 89.46C1.204 80.85 3.784 72.75 7.724 65.49V65.49zM48 416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V224H48V416z\"]\n};\nvar faFaceFrown = {\n prefix: 'far',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M143.9 398.6C131.4 394.1 124.9 380.3 129.4 367.9C146.9 319.4 198.9 288 256 288C313.1 288 365.1 319.4 382.6 367.9C387.1 380.3 380.6 394.1 368.1 398.6C355.7 403.1 341.9 396.6 337.4 384.1C328.2 358.5 297.2 336 256 336C214.8 336 183.8 358.5 174.6 384.1C170.1 396.6 156.3 403.1 143.9 398.6V398.6zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faFrown = faFaceFrown;\nvar faFloppyDisk = {\n prefix: 'far',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M224 256c-35.2 0-64 28.8-64 64c0 35.2 28.8 64 64 64c35.2 0 64-28.8 64-64C288 284.8 259.2 256 224 256zM433.1 129.1l-83.9-83.9C341.1 37.06 328.8 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 151.2 442.9 138.9 433.1 129.1zM128 80h144V160H128V80zM400 416c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h16v104c0 13.25 10.75 24 24 24h192C309.3 208 320 197.3 320 184V83.88l78.25 78.25C399.4 163.2 400 164.8 400 166.3V416z\"]\n};\nvar faSave = faFloppyDisk;\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M144 208C126.3 208 112 222.2 112 239.1C112 257.7 126.3 272 144 272s31.1-14.25 31.1-32S161.8 208 144 208zM256 207.1c-17.75 0-31.1 14.25-31.1 32s14.25 31.1 31.1 31.1s31.1-14.25 31.1-31.1S273.8 207.1 256 207.1zM368 208c-17.75 0-31.1 14.25-31.1 32s14.25 32 31.1 32c17.75 0 31.99-14.25 31.99-32C400 222.2 385.8 208 368 208zM256 31.1c-141.4 0-255.1 93.12-255.1 208c0 47.62 19.91 91.25 52.91 126.3c-14.87 39.5-45.87 72.88-46.37 73.25c-6.624 7-8.373 17.25-4.624 26C5.818 474.2 14.38 480 24 480c61.49 0 109.1-25.75 139.1-46.25c28.87 9 60.16 14.25 92.9 14.25c141.4 0 255.1-93.13 255.1-207.1S397.4 31.1 256 31.1zM256 400c-26.75 0-53.12-4.125-78.36-12.12l-22.75-7.125L135.4 394.5c-14.25 10.12-33.87 21.38-57.49 29c7.374-12.12 14.37-25.75 19.87-40.25l10.62-28l-20.62-21.87C69.81 314.1 48.06 282.2 48.06 240c0-88.25 93.24-160 207.1-160s207.1 71.75 207.1 160S370.8 400 256 400z\"]\n};\nvar faCommenting = faCommentDots;\nvar faFaceGrinSquint = {\n prefix: 'far',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M208 288C199.2 288 192 295.2 192 304v96C192 408.8 199.2 416 208 416s16-7.164 16-16v-96C224 295.2 216.8 288 208 288zM272 288C263.2 288 256 295.2 256 304v96c0 8.836 7.162 16 15.1 16S288 408.8 288 400l-.0013-96C287.1 295.2 280.8 288 272 288zM376.9 201.2c-13.74-17.12-34.8-27.45-56.92-27.45h-13.72c-3.713 0-7.412 .291-11.07 .8652C282.7 165.1 267.4 160 251.4 160h-11.44V72c0-39.7-32.31-72-72.01-72c-39.7 0-71.98 32.3-71.98 72v168.5C84.85 235.1 75.19 235.4 69.83 235.4c-44.35 0-69.83 37.23-69.83 69.85c0 14.99 4.821 29.51 13.99 41.69l78.14 104.2C120.7 489.3 166.2 512 213.7 512h109.7c6.309 0 12.83-.957 18.14-2.645c28.59-5.447 53.87-19.41 73.17-40.44C436.1 446.3 448 416.2 448 384.2V274.3C448 234.6 416.3 202.3 376.9 201.2zM400 384.2c0 19.62-7.219 38.06-20.44 52.06c-12.53 13.66-29.03 22.67-49.69 26.56C327.4 463.6 325.3 464 323.4 464H213.7c-32.56 0-63.65-15.55-83.18-41.59L52.36 318.2C49.52 314.4 48.02 309.8 48.02 305.2c0-16.32 14.5-21.75 21.72-21.75c4.454 0 12.01 1.55 17.34 8.703l28.12 37.5c3.093 4.105 7.865 6.419 12.8 6.419c11.94 0 16.01-10.7 16.01-16.01V72c0-13.23 10.78-24 23.1-24c13.22 0 24 10.77 24 24v130.7c0 6.938 5.451 16.01 16.03 16.01C219.5 218.7 220.1 208 237.7 208h13.72c21.5 0 18.56 19.21 34.7 19.21c8.063 0 9.805-5.487 20.15-5.487h13.72c26.96 0 17.37 27.43 40.77 27.43l14.07-.0037c13.88 0 25.16 11.28 25.16 25.14V384.2zM336 288C327.2 288 320 295.2 320 304v96c0 8.836 7.164 16 16 16s16-7.164 16-16v-96C352 295.2 344.8 288 336 288z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M270.1 480h97.92C447.4 480 512 417.1 512 339.7V231.8c0-23.45-6.106-46.73-17.66-67.33l-31.35-55.85C447.5 81.1 417.1 64 385.9 64h-46.97c-26.63 0-51.56 11.63-68.4 31.93l-15.46 18.71L127.3 68.44C119 65.46 110.5 64.05 102.1 64.05c-30.02 0-58.37 18.06-69.41 47.09C15.06 156.8 46.19 194 76.75 204.9l2.146 .7637L68.79 206.4C30.21 209 0 241.2 0 279.3c0 39.7 33.27 72.09 73.92 72.09c1.745 0 3.501-.0605 5.268-.1833l88.79-6.135v8.141c0 22.11 10.55 43.11 28.05 56.74C197.4 448.8 230.2 480 270.1 480zM269.1 432c-14.34 0-26-11.03-26-24.62c0 0 .0403-14.31 .0403-14.71c0-6.894-4.102-14.2-10.67-16.39c-10.39-3.5-17.38-12.78-17.38-23.06v-13.53c0-16.98 13.7-16.4 13.7-29.89c0-9.083-7.392-15.96-15.96-15.96c-.3646 0-.7311 .0125-1.099 .0377c0 0-138.1 9.505-138.7 9.505c-14.32 0-25.93-11.04-25.93-24.49c0-13.28 10.7-23.74 24.1-24.64l163.2-11.28c2.674-.1882 14.92-2.907 14.92-16.18c0-6.675-4.284-12.58-10.65-14.85L92.84 159.7C85.39 156.1 75.97 149.4 75.97 136.7c0-11.14 9.249-24.66 25.97-24.66c3.043 0 6.141 .5115 9.166 1.59l234.1 85.03c1.801 .6581 3.644 .9701 5.456 .9701c8.96 0 16-7.376 16-15.1c0-6.514-4.068-12.69-10.59-15.04l-64.81-23.47l15.34-18.56C315.2 117.3 326.6 112 338.9 112h46.97c14.77 0 28.28 7.719 35.27 20.16L452.5 188c7.531 13.41 11.52 28.56 11.52 43.81v107.9c0 50.91-43.06 92.31-96 92.31H269.1z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'far',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M519.4 334.4C522.7 342.5 527.8 352.1 535.9 361.1C539.9 365 544.1 368.4 548.6 371.4C506.4 454.8 419.9 512 319.1 512C220.1 512 133.6 454.8 91.4 371.4C95.87 368.4 100.1 365 104.1 361.1C112.2 352.1 117.3 342.5 120.6 334.4C121.8 331.5 122.9 328.6 123.9 325.5C152.5 406.2 229.5 464 319.1 464C410.5 464 487.5 406.2 516.1 325.5C517.1 328.6 518.2 331.5 519.4 334.4V334.4zM319.1 47.1C218.6 47.1 134.2 120.5 115.7 216.5C109.1 213.4 101.4 212.2 93.4 213.3C86.59 214.3 77.18 215.7 66.84 217.7C85.31 94.5 191.6 0 319.1 0C448.4 0 554.7 94.5 573.2 217.7C562.8 215.7 553.4 214.3 546.6 213.3C538.6 212.2 530.9 213.4 524.2 216.5C505.8 120.5 421.4 48 319.1 48V47.1zM78.5 341.1C59.98 356.7 32.01 355.5 14.27 337.7C-4.442 319-4.825 288.9 13.55 270.6C22.19 261.9 43.69 255.4 64.05 250.1C77.02 248.2 89.53 246.2 97.94 245C103.3 244.2 107.8 248.7 106.1 254.1C103.9 275.6 95.58 324.3 81.43 338.4C80.49 339.4 79.51 340.3 78.5 341.1V341.1zM561.5 341.1C560.7 340.5 559.1 339.8 559.2 339.1C559 338.9 558.8 338.7 558.6 338.4C544.4 324.3 536.1 275.6 533 254.1C532.2 248.7 536.7 244.2 542.1 245C543.1 245.2 544.2 245.3 545.4 245.5C553.6 246.7 564.6 248.5 575.1 250.1C596.3 255.4 617.8 261.9 626.4 270.6C644.8 288.9 644.4 319 625.7 337.7C607.1 355.5 580 356.7 561.5 341.1L561.5 341.1zM319.9 399.1C269.6 399.1 225.5 374.6 200.9 336.5C190.5 320.4 207.7 303.1 226.3 308.4C255.3 315.1 286.8 318.8 319.9 318.8C353 318.8 384.6 315.1 413.5 308.4C432.2 303.1 449.4 320.4 438.1 336.5C414.4 374.6 370.3 399.1 319.9 399.1zM281.6 228.8L281.4 228.5C281.2 228.3 281 228 280.7 227.6C280 226.8 279.1 225.7 277.9 224.3C275.4 221.4 271.9 217.7 267.7 213.1C258.9 206.2 248.8 200 239.1 200C231.2 200 221.1 206.2 212.3 213.1C208.1 217.7 204.6 221.4 202.1 224.3C200.9 225.7 199.1 226.8 199.3 227.6C198.1 228 198.8 228.3 198.6 228.5L198.4 228.8L198.4 228.8C196.3 231.6 192.7 232.7 189.5 231.6C186.2 230.5 183.1 227.4 183.1 224C183.1 206.1 190.7 188.4 200.6 175.2C210.4 162.2 224.5 152 239.1 152C255.5 152 269.6 162.2 279.4 175.2C289.3 188.4 295.1 206.1 295.1 224C295.1 227.4 293.8 230.5 290.5 231.6C287.3 232.7 283.7 231.6 281.6 228.8L281.6 228.8zM441.6 228.8L441.6 228.8L441.4 228.5C441.2 228.3 441 228 440.7 227.6C440 226.8 439.1 225.7 437.9 224.3C435.4 221.4 431.9 217.7 427.7 213.1C418.9 206.2 408.8 200 400 200C391.2 200 381.1 206.2 372.3 213.1C368.1 217.7 364.6 221.4 362.1 224.3C360.9 225.7 359.1 226.8 359.3 227.6C358.1 228 358.8 228.3 358.6 228.5L358.4 228.8L358.4 228.8C356.3 231.6 352.7 232.7 349.5 231.6C346.2 230.5 344 227.4 344 223.1C344 206.1 350.7 188.4 360.6 175.2C370.4 162.2 384.5 151.1 400 151.1C415.5 151.1 429.6 162.2 439.4 175.2C449.3 188.4 456 206.1 456 223.1C456 227.4 453.8 230.5 450.5 231.6C447.3 232.7 443.7 231.6 441.6 228.8V228.8z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faCalendarXmark = {\n prefix: 'far',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M257.9 328L304.1 375C314.3 384.4 314.3 399.6 304.1 408.1C295.6 418.3 280.4 418.3 271 408.1L224 361.9L176.1 408.1C167.6 418.3 152.4 418.3 143 408.1C133.7 399.6 133.7 384.4 143 375L190.1 328L143 280.1C133.7 271.6 133.7 256.4 143 247C152.4 237.7 167.6 237.7 176.1 247L224 294.1L271 247C280.4 237.7 295.6 237.7 304.1 247C314.3 256.4 314.3 271.6 304.1 280.1L257.9 328zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM240 288c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-16.52l43.84 30.2C292.3 403.5 304 397.6 304 387.4V284.6c0-10.16-11.64-16.16-20.16-10.32L240 304.5V288z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M320 464C328.8 464 336 456.8 336 448V416H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V416H48V448C48 456.8 55.16 464 64 464H320zM256 160C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V192H0V64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V192H336V160H256zM88 224C118.9 224 144 249.1 144 280C144 310.9 118.9 336 88 336H80V368C80 376.8 72.84 384 64 384C55.16 384 48 376.8 48 368V240C48 231.2 55.16 224 64 224H88zM112 280C112 266.7 101.3 256 88 256H80V304H88C101.3 304 112 293.3 112 280zM160 240C160 231.2 167.2 224 176 224H200C226.5 224 248 245.5 248 272V336C248 362.5 226.5 384 200 384H176C167.2 384 160 376.8 160 368V240zM192 352H200C208.8 352 216 344.8 216 336V272C216 263.2 208.8 256 200 256H192V352zM336 224C344.8 224 352 231.2 352 240C352 248.8 344.8 256 336 256H304V288H336C344.8 288 352 295.2 352 304C352 312.8 344.8 320 336 320H304V368C304 376.8 296.8 384 288 384C279.2 384 272 376.8 272 368V240C272 231.2 279.2 224 288 224H336z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M256 32C114.6 32 .0272 125.1 .0272 240c0 47.63 19.91 91.25 52.91 126.2c-14.88 39.5-45.87 72.88-46.37 73.25c-6.625 7-8.375 17.25-4.625 26C5.818 474.2 14.38 480 24 480c61.5 0 109.1-25.75 139.1-46.25C191.1 442.8 223.3 448 256 448c141.4 0 255.1-93.13 255.1-208S397.4 32 256 32zM256.1 400c-26.75 0-53.12-4.125-78.38-12.12l-22.75-7.125l-19.5 13.75c-14.25 10.12-33.88 21.38-57.5 29c7.375-12.12 14.37-25.75 19.88-40.25l10.62-28l-20.62-21.87C69.82 314.1 48.07 282.2 48.07 240c0-88.25 93.25-160 208-160s208 71.75 208 160S370.8 400 256.1 400z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M0 128C0 92.65 28.65 64 64 64H448C483.3 64 512 92.65 512 128V384C512 419.3 483.3 448 448 448H64C28.65 448 0 419.3 0 384V128zM48 128V150.1L220.5 291.7C241.1 308.7 270.9 308.7 291.5 291.7L464 150.1V127.1C464 119.2 456.8 111.1 448 111.1H64C55.16 111.1 48 119.2 48 127.1L48 128zM48 212.2V384C48 392.8 55.16 400 64 400H448C456.8 400 464 392.8 464 384V212.2L322 328.8C283.6 360.3 228.4 360.3 189.1 328.8L48 212.2z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M360 0C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24C0 10.75 10.75 0 24 0L360 0zM192 289.9L110.5 371.5C90.96 390.1 80 417.4 80 445V464H304V445C304 417.4 293 390.1 273.5 371.5L192 289.9zM192 222.1L273.5 140.5C293 121 304 94.56 304 66.98V47.1H80V66.98C80 94.56 90.96 121 110.5 140.5L192 222.1z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M216.1 408.1C207.6 418.3 192.4 418.3 183 408.1L119 344.1C109.7 335.6 109.7 320.4 119 311C128.4 301.7 143.6 301.7 152.1 311L200 358.1L295 263C304.4 253.7 319.6 253.7 328.1 263C338.3 272.4 338.3 287.6 328.1 296.1L216.1 408.1zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faHardDrive = {\n prefix: 'far',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M304 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C328 354.7 317.3 344 304 344zM448 32h-384c-35.35 0-64 28.65-64 64v320c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V96C512 60.65 483.3 32 448 32zM464 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16v-96c0-8.822 7.178-16 16-16h384C456.8 304 464 311.2 464 320V416zM464 258.3C458.9 256.9 453.6 256 448 256H64C58.44 256 53.14 256.9 48 258.3V96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V258.3zM400 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C424 354.7 413.3 344 400 344z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'far',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.18C446-5.046 477.5-4.646 497.1 14.92C516.6 34.49 517 65.95 497.8 85.18C483 99.97 432.2 108.8 409.6 111.9C403.1 112.8 399.2 108 400.1 102.4C403.3 79.94 412 28.97 426.8 14.18H426.8zM74.98 74.98C158.2-8.253 284.5-22.19 382.2 33.17C380.6 37.96 379.3 42.81 378.1 47.52C375 59.67 372.6 72.08 370.8 82.52C290.1 28.93 180.1 37.74 108.9 108.9C37.75 180.1 28.94 290 82.49 370.8C72.01 372.6 59.6 374.1 47.46 378.1C42.76 379.3 37.93 380.6 33.15 382.1C-22.19 284.5-8.245 158.2 74.98 74.98V74.98zM478.8 129.9C534.2 227.5 520.2 353.8 437 437C353.8 520.3 227.5 534.2 129.8 478.8C131.3 474 132.7 469.2 133.9 464.5C136.1 452.3 139.4 439.9 141.2 429.5C221.9 483.1 331.9 474.3 403.1 403.1C474.3 331.9 483.1 221.1 429.5 141.2C439.1 139.4 452.4 137 464.5 133.9C469.2 132.7 474.1 131.4 478.8 129.9L478.8 129.9zM359.2 226.9C369.3 210.6 393 210 397 228.8C406.6 273.1 393.4 322.3 357.8 357.9C322.2 393.5 273 406.7 228.6 397.1C209.9 393.1 210.5 369.4 226.8 359.3C252 343.6 276.1 323.9 300.4 300.5C323.8 277.1 343.5 252.1 359.2 226.9L359.2 226.9zM189.5 235.7C201.1 232.1 211.1 242.1 208.5 254.6L178.8 352.1C176.2 360.7 165.4 363.4 159 357C157.1 355 155.8 352.5 155.6 349.7L150.5 293.6L94.43 288.5C91.66 288.3 89.07 287.1 87.1 285.1C80.76 278.7 83.46 267.9 92.05 265.3L189.5 235.7zM288.5 94.43L293.6 150.5L349.7 155.6C352.5 155.8 355 157.1 357 159C363.4 165.4 360.7 176.2 352.1 178.8L254.6 208.5C242.1 211.1 232.1 201.1 235.7 189.5L265.3 92.05C267.9 83.46 278.7 80.76 285.1 87.1C287.1 89.07 288.3 91.66 288.5 94.43V94.43zM14.18 426.8C28.97 412 79.85 403.2 102.4 400.1C108 399.2 112.8 403.1 111.9 409.6C108.7 432.1 99.97 483 85.18 497.8C65.95 517 34.5 516.6 14.93 497.1C-4.645 477.5-5.046 446 14.18 426.8H14.18z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faRectangleList = {\n prefix: 'far',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M128 192C110.3 192 96 177.7 96 160C96 142.3 110.3 128 128 128C145.7 128 160 142.3 160 160C160 177.7 145.7 192 128 192zM200 160C200 146.7 210.7 136 224 136H448C461.3 136 472 146.7 472 160C472 173.3 461.3 184 448 184H224C210.7 184 200 173.3 200 160zM200 256C200 242.7 210.7 232 224 232H448C461.3 232 472 242.7 472 256C472 269.3 461.3 280 448 280H224C210.7 280 200 269.3 200 256zM200 352C200 338.7 210.7 328 224 328H448C461.3 328 472 338.7 472 352C472 365.3 461.3 376 448 376H224C210.7 376 200 365.3 200 352zM128 224C145.7 224 160 238.3 160 256C160 273.7 145.7 288 128 288C110.3 288 96 273.7 96 256C96 238.3 110.3 224 128 224zM128 384C110.3 384 96 369.7 96 352C96 334.3 110.3 320 128 320C145.7 320 160 334.3 160 352C160 369.7 145.7 384 128 384zM0 96C0 60.65 28.65 32 64 32H512C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V96C528 87.16 520.8 80 512 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faListAlt = faRectangleList;\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M224 232C237.3 232 248 242.7 248 256V304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H248V400C248 413.3 237.3 424 224 424C210.7 424 200 413.3 200 400V352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H200V256C200 242.7 210.7 232 224 232zM152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"]\n};\nvar faCircleLeft = {\n prefix: 'far',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M360 224L272 224v-56c0-9.531-5.656-18.16-14.38-22C248.9 142.2 238.7 143.9 231.7 150.4l-96 88.75C130.8 243.7 128 250.1 128 256.8c.3125 7.781 2.875 13.25 7.844 17.75l96 87.25c7.031 6.406 17.19 8.031 25.88 4.188s14.28-12.44 14.28-21.94l-.002-56L360 288C373.3 288 384 277.3 384 264v-16C384 234.8 373.3 224 360 224zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faMoneyBill1 = {\n prefix: 'far',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M400 256C400 317.9 349.9 368 288 368C226.1 368 176 317.9 176 256C176 194.1 226.1 144 288 144C349.9 144 400 194.1 400 256zM272 224V288H264C255.2 288 248 295.2 248 304C248 312.8 255.2 320 264 320H312C320.8 320 328 312.8 328 304C328 295.2 320.8 288 312 288H304V208C304 199.2 296.8 192 288 192H272C263.2 192 256 199.2 256 208C256 216.8 263.2 224 272 224zM0 128C0 92.65 28.65 64 64 64H512C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128zM48 176V336C83.35 336 112 364.7 112 400H464C464 364.7 492.7 336 528 336V176C492.7 176 464 147.3 464 112H112C112 147.3 83.35 176 48 176z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M232 120C232 106.7 242.7 96 256 96C269.3 96 280 106.7 280 120V243.2L365.3 300C376.3 307.4 379.3 322.3 371.1 333.3C364.6 344.3 349.7 347.3 338.7 339.1L242.7 275.1C236 271.5 232 264 232 255.1L232 120zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256z\"]\n};\nvar faClockFour = faClock;\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M512 64H64C28.65 64 0 92.65 0 128v256c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V128C576 92.65 547.3 64 512 64zM528 384c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V128c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V384zM140 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 157.3 146.7 152 140 152zM196 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 194.7 189.3 200 196 200zM276 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 194.7 269.3 200 276 200zM356 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 194.7 349.3 200 356 200zM460 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 157.3 466.7 152 460 152zM140 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 237.3 146.7 232 140 232zM196 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 274.7 189.3 280 196 280zM276 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 274.7 269.3 280 276 280zM356 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 274.7 349.3 280 356 280zM460 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 237.3 466.7 232 460 232zM400 320h-224C167.1 320 160 327.1 160 336V352c0 8.875 7.125 16 16 16h224c8.875 0 16-7.125 16-16v-16C416 327.1 408.9 320 400 320z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416zM236.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C116.5 206.2 106.5 230.4 106.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C159.5 280.9 154.5 268.8 154.5 256s5-24.88 14.06-33.94C187.3 203.3 217.8 203.3 236.5 222.1zM428.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C308.5 206.2 298.5 230.4 298.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C351.5 280.9 346.5 268.8 346.5 256s5-24.88 14.06-33.94C379.3 203.3 409.8 203.3 428.5 222.1z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M512 32H160c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64H512c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 320c0 8.822-7.178 16-16 16h-16l-109.3-160.9C383.7 170.7 378.7 168 373.3 168c-5.352 0-10.35 2.672-13.31 7.125l-62.74 94.11L274.9 238.6C271.9 234.4 267.1 232 262 232c-5.109 0-9.914 2.441-12.93 6.574L176 336H160c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16H512c8.822 0 16 7.178 16 16V320zM224 112c-17.67 0-32 14.33-32 32s14.33 32 32 32c17.68 0 32-14.33 32-32S241.7 112 224 112zM456 480H120C53.83 480 0 426.2 0 360v-240C0 106.8 10.75 96 24 96S48 106.8 48 120v240c0 39.7 32.3 72 72 72h336c13.25 0 24 10.75 24 24S469.3 480 456 480z\"]\n};\nvar faFaceGrin = {\n prefix: 'far',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFaceMeh = {\n prefix: 'far',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM328 328C341.3 328 352 338.7 352 352C352 365.3 341.3 376 328 376H184C170.7 376 160 365.3 160 352C160 338.7 170.7 328 184 328H328zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faMeh = faFaceMeh;\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M368 344h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 344 368 344zM208 320c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 291.3 172.7 320 208 320zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16h-192c0-44.18-35.82-80-80-80h-64C131.8 352 96 387.8 96 432H64c-8.822 0-16-7.178-16-16V160h480V416zM368 264h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 264 368 264z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M505.2 324.8l-47.73-68.78l47.75-68.81c7.359-10.62 8.797-24.12 3.844-36.06c-4.969-11.94-15.52-20.44-28.22-22.72l-82.39-14.88l-14.89-82.41c-2.281-12.72-10.76-23.25-22.69-28.22c-11.97-4.936-25.42-3.498-36.12 3.844L256 54.49L187.2 6.709C176.5-.6016 163.1-2.039 151.1 2.896c-11.92 4.971-20.4 15.5-22.7 28.19l-14.89 82.44L31.15 128.4C18.42 130.7 7.854 139.2 2.9 151.2C-2.051 163.1-.5996 176.6 6.775 187.2l47.73 68.78l-47.75 68.81c-7.359 10.62-8.795 24.12-3.844 36.06c4.969 11.94 15.52 20.44 28.22 22.72l82.39 14.88l14.89 82.41c2.297 12.72 10.78 23.25 22.7 28.22c11.95 4.906 25.44 3.531 36.09-3.844L256 457.5l68.83 47.78C331.3 509.7 338.8 512 346.3 512c4.906 0 9.859-.9687 14.56-2.906c11.92-4.969 20.4-15.5 22.7-28.19l14.89-82.44l82.37-14.88c12.73-2.281 23.3-10.78 28.25-22.75C514.1 348.9 512.6 335.4 505.2 324.8zM456.8 339.2l-99.61 18l-18 99.63L256 399.1L172.8 456.8l-18-99.63l-99.61-18L112.9 255.1L55.23 172.8l99.61-18l18-99.63L256 112.9l83.15-57.75l18.02 99.66l99.61 18L399.1 255.1L456.8 339.2zM256 143.1c-61.85 0-111.1 50.14-111.1 111.1c0 61.85 50.15 111.1 111.1 111.1s111.1-50.14 111.1-111.1C367.1 194.1 317.8 143.1 256 143.1zM256 319.1c-35.28 0-63.99-28.71-63.99-63.99S220.7 192 256 192s63.99 28.71 63.99 63.1S291.3 319.1 256 319.1z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'far',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM281.9 214.6C273.9 207 273.5 194.4 281 186.3C295.6 170.8 316.3 164 335.6 164C354.1 164 375.7 170.8 390.2 186.3C397.8 194.4 397.4 207 389.3 214.6C381.2 222.1 368.6 221.7 361 213.7C355.6 207.8 346.3 204 335.6 204C324.1 204 315.7 207.8 310.2 213.7C302.7 221.7 290 222.1 281.9 214.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDown = {\n prefix: 'far',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M344 240h-56L287.1 152c0-13.25-10.75-24-24-24h-16C234.7 128 223.1 138.8 223.1 152L224 240h-56c-9.531 0-18.16 5.656-22 14.38C142.2 263.1 143.9 273.3 150.4 280.3l88.75 96C243.7 381.2 250.1 384 256.8 384c7.781-.3125 13.25-2.875 17.75-7.844l87.25-96c6.406-7.031 8.031-17.19 4.188-25.88S353.5 240 344 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M128 288V64.03c0-17.67-14.33-31.1-32-31.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64C113.7 320 128 305.7 128 288zM481.5 229.1c1.234-5.092 1.875-10.32 1.875-15.64c0-22.7-11.44-43.13-29.28-55.28c.4219-3.015 .6406-6.076 .6406-9.122c0-22.32-11.06-42.6-28.83-54.83c-2.438-34.71-31.47-62.2-66.8-62.2h-52.53c-35.94 0-71.55 11.87-100.3 33.41L169.6 92.93c-6.285 4.71-9.596 11.85-9.596 19.13c0 12.76 10.29 24.04 24.03 24.04c5.013 0 10.07-1.565 14.38-4.811l36.66-27.51c20.48-15.34 45.88-23.81 71.5-23.81h52.53c10.45 0 18.97 8.497 18.97 18.95c0 3.5-1.11 4.94-1.11 9.456c0 26.97 29.77 17.91 29.77 40.64c0 9.254-6.392 10.96-6.392 22.25c0 13.97 10.85 21.95 19.58 23.59c8.953 1.671 15.45 9.481 15.45 18.56c0 13.04-11.39 13.37-11.39 28.91c0 12.54 9.702 23.08 22.36 23.94C456.2 266.1 464 275.2 464 284.1c0 10.43-8.516 18.93-18.97 18.93H307.4c-12.44 0-24 10.02-24 23.1c0 4.038 1.02 8.078 3.066 11.72C304.4 371.7 312 403.8 312 411.2c0 8.044-5.984 20.79-22.06 20.79c-12.53 0-14.27-.9059-24.94-28.07c-24.75-62.91-61.74-99.9-80.98-99.9c-13.8 0-24.02 11.27-24.02 23.99c0 7.041 3.083 14.02 9.016 18.76C238.1 402 211.4 480 289.9 480C333.8 480 360 445 360 411.2c0-12.7-5.328-35.21-14.83-59.33h99.86C481.1 351.9 512 321.9 512 284.1C512 261.8 499.9 241 481.5 229.1z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M296 463.1H23.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24h272c13.25 0 23.1-10.75 23.1-23.1S309.3 463.1 296 463.1zM55.1 287.1L80 287.1v29.5c0 40.25-3.5 81.25-23.38 114.5h53.5C125.1 394.1 128 354.6 128 317.5v-29.5h64v29.5c0 37.13 2.875 77.5 17.88 114.5h53.5C243.5 398.7 240 357.7 240 317.5V287.1l24-.0001C277.3 287.1 288 277.3 288 263.1c0-13.25-10.75-24-23.1-24H241c23.75-21.88 38.1-53.12 38.1-87.1c0-9.393-1.106-19.05-3.451-28.86C272.3 105.4 244.9 32 159.1 32C93.75 32 40 85.75 40 151.1c0 34.88 15.12 66.12 39 88H55.1C42.75 239.1 32 250.7 32 263.1C32 277.3 42.75 287.1 55.1 287.1zM160 79.1c39.75 0 72 32.25 72 72S199.8 223.1 160 223.1S88 191.7 88 151.1S120.2 79.1 160 79.1z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M168 336C181.3 336 192 346.7 192 360C192 373.3 181.3 384 168 384H120C106.7 384 96 373.3 96 360C96 346.7 106.7 336 120 336H168zM360 336C373.3 336 384 346.7 384 360C384 373.3 373.3 384 360 384H248C234.7 384 224 373.3 224 360C224 346.7 234.7 336 248 336H360zM512 32C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H512zM512 80H64C55.16 80 48 87.16 48 96V128H528V96C528 87.16 520.8 80 512 80zM528 224H48V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V224z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M256 32V49.88C328.5 61.39 384 124.2 384 200V233.4C384 278.8 399.5 322.9 427.8 358.4L442.7 377C448.5 384.2 449.6 394.1 445.6 402.4C441.6 410.7 433.2 416 424 416H24C14.77 416 6.365 410.7 2.369 402.4C-1.628 394.1-.504 384.2 5.26 377L20.17 358.4C48.54 322.9 64 278.8 64 233.4V200C64 124.2 119.5 61.39 192 49.88V32C192 14.33 206.3 0 224 0C241.7 0 256 14.33 256 32V32zM216 96C158.6 96 112 142.6 112 200V233.4C112 281.3 98.12 328 72.31 368H375.7C349.9 328 336 281.3 336 233.4V200C336 142.6 289.4 96 232 96H216zM288 448C288 464.1 281.3 481.3 269.3 493.3C257.3 505.3 240.1 512 224 512C207 512 190.7 505.3 178.7 493.3C166.7 481.3 160 464.1 160 448H288z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM336 448V160H256C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V448C48 456.8 55.16 464 64 464H320C328.8 464 336 456.8 336 448z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M296 96C296 87.16 303.2 80 312 80H328C336.8 80 344 87.16 344 96V120H368C376.8 120 384 127.2 384 136V152C384 160.8 376.8 168 368 168H344V192C344 200.8 336.8 208 328 208H312C303.2 208 296 200.8 296 192V168H272C263.2 168 256 160.8 256 152V136C256 127.2 263.2 120 272 120H296V96zM408 0C447.8 0 480 32.24 480 72V80H568C607.8 80 640 112.2 640 152V440C640 479.8 607.8 512 568 512H71.98C32.19 512 0 479.8 0 440V152C0 112.2 32.24 80 72 80H160V72C160 32.24 192.2 0 232 0L408 0zM480 128V464H568C581.3 464 592 453.3 592 440V336H536C522.7 336 512 325.3 512 312C512 298.7 522.7 288 536 288H592V240H536C522.7 240 512 229.3 512 216C512 202.7 522.7 192 536 192H592V152C592 138.7 581.3 128 568 128H480zM48 152V192H104C117.3 192 128 202.7 128 216C128 229.3 117.3 240 104 240H48V288H104C117.3 288 128 298.7 128 312C128 325.3 117.3 336 104 336H48V440C48 453.3 58.74 464 71.98 464H160V128H72C58.75 128 48 138.7 48 152V152zM208 464H272V400C272 373.5 293.5 352 320 352C346.5 352 368 373.5 368 400V464H432V72C432 58.75 421.3 48 408 48H232C218.7 48 208 58.75 208 72V464z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [384, 512, [9820], \"f447\", \"M360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464zM345.1 32h-308C17 32 0 49 0 70v139.4C0 218.8 4 227.5 11 233.6L48 265.8c0 8.885 .0504 17.64 .0504 26.46c0 39.32-1.001 79.96-11.93 139.8h49C94.95 374.3 96.11 333.3 96.11 285.5C96.11 270.7 96 255.1 96 238.2L48 196.5V80h64V128H160V80h64V128h48V80h64v116.5L288 238.2c0 16.77-.1124 32.25-.1124 47.1c0 47.79 1.164 89.15 10.99 146.7h49c-10.92-59.83-11.93-100.6-11.93-139.9C335.9 283.3 336 274.6 336 265.8l37-32.13C380 227.5 384 218.8 384 209.4V70C384 49 367 32 345.1 32zM192 224C174.4 224 160 238.4 160 256v64h64V256C224 238.4 209.6 224 192 224z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M293.3 .6123C304.2 3.118 311.9 12.82 311.9 24V408.7C311.9 417.5 307.1 425.7 299.2 429.8L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.1 115.1 483.9L142.2 328.4L31.11 218.3C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C271.2 3.46 282.4-1.893 293.3 .6127L293.3 .6123zM263.9 128.4L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L263.9 394.3L263.9 128.4z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M391.9 464H55.95c-13.25 0-23.1 10.75-23.1 23.1S42.7 512 55.95 512h335.1c13.25 0 23.1-10.75 23.1-23.1S405.2 464 391.9 464zM448 216c0-11.82-3.783-23.51-11.08-33.17c-10.3-14.39-27-22.88-44.73-22.88L247.9 160V104h31.1c13.2 0 24.06-10.8 24.06-24S293.1 56 279.9 56h-31.1V23.1C247.9 10.8 237.2 0 223.1 0S199.9 10.8 199.9 23.1V56H167.9c-13.2 0-23.97 10.8-23.97 24S154.7 104 167.9 104h31.1V160H55.95C24.72 160 0 185.3 0 215.9C0 221.6 .8893 227.4 2.704 233L68.45 432h50.5L48.33 218.4C48.09 217.6 47.98 216.9 47.98 216.1C47.98 212.3 50.93 208 55.95 208h335.9c6.076 0 8.115 5.494 8.115 8.113c0 .6341-.078 1.269-.2405 1.887L328.8 432h50.62l65.1-199.2C447.2 227.3 448 221.7 448 216z\"]\n};\nvar faCircleUser = {\n prefix: 'far',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M256 112c-48.6 0-88 39.4-88 88C168 248.6 207.4 288 256 288s88-39.4 88-88C344 151.4 304.6 112 256 112zM256 240c-22.06 0-40-17.95-40-40C216 177.9 233.9 160 256 160s40 17.94 40 40C296 222.1 278.1 240 256 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-46.73 0-89.76-15.68-124.5-41.79C148.8 389 182.4 368 220.2 368h71.69c37.75 0 71.31 21.01 88.68 54.21C345.8 448.3 302.7 464 256 464zM416.2 388.5C389.2 346.3 343.2 320 291.8 320H220.2c-51.36 0-97.35 26.25-124.4 68.48C65.96 352.5 48 306.3 48 256c0-114.7 93.31-208 208-208s208 93.31 208 208C464 306.3 446 352.5 416.2 388.5z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z\"]\n};\nvar faShareFromSquare = {\n prefix: 'far',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M568.5 142.6l-144-135.1c-9.625-9.156-24.81-8.656-33.91 .9687c-9.125 9.625-8.688 24.81 .9687 33.91l100.1 94.56h-163.4C287.5 134.2 249.7 151 221 179.4C192 208.2 176 246.7 176 288v87.1c0 13.25 10.75 23.1 24 23.1S224 389.3 224 376V288c0-28.37 10.94-54.84 30.78-74.5C274.3 194.2 298.9 183 328 184h163.6l-100.1 94.56c-9.656 9.094-10.09 24.28-.9687 33.91c4.719 4.1 11.06 7.531 17.44 7.531c5.906 0 11.84-2.156 16.47-6.562l144-135.1C573.3 172.9 576 166.6 576 160S573.3 147.1 568.5 142.6zM360 384c-13.25 0-24 10.75-24 23.1v47.1c0 4.406-3.594 7.1-8 7.1h-272c-4.406 0-8-3.594-8-7.1V184c0-4.406 3.594-7.1 8-7.1H112c13.25 0 24-10.75 24-23.1s-10.75-23.1-24-23.1H56c-30.88 0-56 25.12-56 55.1v271.1C0 486.9 25.13 512 56 512h272c30.88 0 56-25.12 56-55.1v-47.1C384 394.8 373.3 384 360 384z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM255.1 176C255.1 176 255.1 176 255.1 176c21.06 0 40.92 8.312 55.83 23.38c9.375 9.344 24.53 9.5 33.97 .1562c9.406-9.344 9.469-24.53 .1562-33.97c-24-24.22-55.95-37.56-89.95-37.56c0 0 .0313 0 0 0c-33.97 0-65.95 13.34-89.95 37.56c-49.44 49.88-49.44 131 0 180.9c24 24.22 55.98 37.56 89.95 37.56c.0313 0 0 0 0 0c34 0 65.95-13.34 89.95-37.56c9.312-9.438 9.25-24.62-.1562-33.97c-9.438-9.312-24.59-9.219-33.97 .1562c-14.91 15.06-34.77 23.38-55.83 23.38c0 0 .0313 0 0 0c-21.09 0-40.95-8.312-55.89-23.38c-30.94-31.22-30.94-82.03 0-113.3C214.2 184.3 234 176 255.1 176z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.24C572.1 40.72 576 48.11 576 56V392C576 401.1 569.8 410.9 560.5 414.4L392.5 478.4C387.4 480.4 381.7 480.5 376.4 478.8L192.5 417.5L32.54 478.4C25.17 481.2 16.88 480.2 10.38 475.8C3.882 471.3 0 463.9 0 456V120C0 110 6.15 101.1 15.46 97.57L183.5 33.57C188.6 31.6 194.3 31.48 199.6 33.23L383.5 94.52L543.5 33.57C550.8 30.76 559.1 31.76 565.6 36.24H565.6zM48 421.2L168 375.5V90.83L48 136.5V421.2zM360 137.3L216 89.3V374.7L360 422.7V137.3zM408 421.2L528 375.5V90.83L408 136.5V421.2z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M183.6 118.6C206.5 82.58 244.1 56.84 288 49.88V32C288 14.33 302.3 .0003 320 .0003C337.7 .0003 352 14.33 352 32V49.88C424.5 61.39 480 124.2 480 200V233.4C480 278.8 495.5 322.9 523.8 358.4L538.7 377C543.1 383.5 545.4 392.2 542.6 400L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L183.6 118.6zM221.7 148.4L450.7 327.1C438.4 298.2 432 266.1 432 233.4V200C432 142.6 385.4 96 328 96H312C273.3 96 239.6 117.1 221.7 148.4V148.4zM160 233.4V222.1L206.7 258.9C202.7 297.7 189.5 335.2 168.3 368H345.2L406.2 416H120C110.8 416 102.4 410.7 98.37 402.4C94.37 394.1 95.5 384.2 101.3 377L116.2 358.4C144.5 322.9 160 278.8 160 233.4V233.4zM384 448C384 464.1 377.3 481.3 365.3 493.3C353.3 505.3 336.1 512 320 512C303 512 286.7 505.3 274.7 493.3C262.7 481.3 256 464.1 256 448H384z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M512 331.8V424c0 13.25-10.75 24-24 24c-13.25 0-24-10.75-24-24v-92.17c0-10.09-3.031-19.8-8.766-28.08l-118.6-170.5C327.4 119.1 312.2 112 295.1 112H53.32c-2.5 0-5.25 2.453-5.313 4.172c-.2969 9.5 3.156 18.47 9.75 25.28C64.36 148.3 73.2 152 82.67 152h161.8c17.09 0 33.4 8.281 43.4 22.14c9.984 13.88 12.73 31.83 7.328 48.05l-9.781 29.34C278.2 273.3 257.8 288 234.9 288H138.7C129.2 288 120.4 291.8 113.8 298.5c-6.594 6.812-10.05 15.78-9.75 25.28C104.1 325.5 106.8 328 109.3 328h156.6c5.188 0 10.14 1.688 14.3 4.797l78.22 58.67c6.031 4.531 9.594 11.66 9.594 19.2L367.1 424c0 13.25-10.75 24-24 24s-24-10.75-24-24v-1.328L257.8 376H109.3c-28.48 0-52.39-22.72-53.28-50.64c-.7187-22.61 7.531-43.98 23.23-60.2C94.1 248.9 116.1 240 138.7 240h96.19c2.297 0 4.328-1.469 5.063-3.656l9.781-29.33c.7031-2.141-.0156-3.797-.7344-4.797C248.2 201.2 246.9 200 244.6 200H82.67c-22.58 0-43.67-8.938-59.39-25.16C7.575 158.6-.6755 137.3 .0433 114.6C.9339 86.72 24.84 64 53.32 64h242.7c31.94 0 61.86 15.67 80.05 41.92l118.6 170.5C506 292.8 512 311.9 512 331.8z\"]\n};\nvar faFaceSmile = {\n prefix: 'far',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmile = faFaceSmile;\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M412 160c-8.326 0-16.3 1.51-23.68 4.27C375.1 151.8 358.9 144 340 144c-11.64 0-22.44 3.223-32.03 8.418l11.12-68.95c.6228-3.874 .9243-7.725 .9243-11.53c0-36.08-28.91-71.95-72.09-71.95c-34.68 0-65.31 25.16-71.03 60.54L173.4 82.22L168.9 72.77c-12.4-25.75-38.07-40.78-64.89-40.78c-40.8 0-72.01 33.28-72.01 72.07c0 10.48 2.296 21.11 7.144 31.18L89.05 238.9C64.64 250.4 48 275.7 48 303.1v80c0 22.06 10.4 43.32 27.83 56.86l45.95 35.74c29.35 22.83 65.98 35.41 103.2 35.41l78.81 .0352C400.9 512 480 432.1 480 335.8v-107.5C480 189.6 447.9 160 412 160zM320 212.3C320 201.1 328.1 192 340 192c11.02 0 20 9.078 20 20.25v55.5C360 278.9 351 288 340 288C328.1 288 320 278.9 320 267.8V212.3zM247.9 47.98c12.05 0 24.13 9.511 24.13 23.98c0 1.277-.1022 2.57-.3134 3.871L248.4 220.5C240.7 217.6 232.4 215.1 223.9 215.1c0 0 .002 0 0 0c-4.475 0-8.967 .4199-13.38 1.254l-10.55 1.627l24.32-150.7C226.2 56.42 236.4 47.98 247.9 47.98zM79.1 104c0-13.27 10.79-24.04 24.02-24.04c8.937 0 17.5 5.023 21.61 13.61l61.29 127.3L137.3 228.5L82.38 114.4C80.76 111.1 79.1 107.5 79.1 104zM303.8 464l-78.81-.0352c-26.56 0-52.72-8.984-73.69-25.3l-45.97-35.75C99.47 398.4 96 391.3 96 383.1v-80c0-11.23 7.969-21.11 17.59-23.22l105.3-16.23C220.6 264.2 222.3 263.1 223.9 263.1c11.91 0 24.09 9.521 24.09 24.06c0 11.04-7.513 20.95-17.17 23.09L172.8 319c-12.03 1.633-20.78 11.92-20.78 23.75c0 20.21 18.82 24.08 23.7 24.08c2.645 0 64.61-8.619 65.54-8.826c23.55-5.227 41.51-22.23 49.73-43.64C303.3 327.5 320.6 336 340 336c8.326 0 16.31-1.51 23.69-4.27C376 344.2 393.1 352 412 352c.1992 0 10.08-.4453 18.65-2.92C423.9 413.5 369.9 464 303.8 464zM432 283.8C432 294.9 423 304 412 304c-11.02 0-20-9.078-20-20.25v-55.5C392 217.1 400.1 208 412 208c11.02 0 20 9.078 20 20.25V283.8z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'far',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM238.9 177.1L221.4 243C219.1 251.6 210.4 256.6 201.8 254.3L136.7 236.9C118.9 232.1 108.4 213.8 113.1 196.1C117.9 178.3 136.2 167.7 153.1 172.5L170.1 176.8L174.4 160.7C179.2 142.9 197.5 132.4 215.3 137.1C233.1 141.9 243.6 160.2 238.9 177.1H238.9zM341.9 176.8L358 172.5C375.8 167.7 394.1 178.3 398.9 196.1C403.6 213.8 393.1 232.1 375.3 236.9L310.2 254.3C301.6 256.6 292.9 251.6 290.6 243L273.1 177.1C268.4 160.2 278.9 141.9 296.7 137.1C314.5 132.4 332.8 142.9 337.6 160.7L341.9 176.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M88 104C88 95.16 95.16 88 104 88H152C160.8 88 168 95.16 168 104V152C168 160.8 160.8 168 152 168H104C95.16 168 88 160.8 88 152V104zM280 88C288.8 88 296 95.16 296 104V152C296 160.8 288.8 168 280 168H232C223.2 168 216 160.8 216 152V104C216 95.16 223.2 88 232 88H280zM88 232C88 223.2 95.16 216 104 216H152C160.8 216 168 223.2 168 232V280C168 288.8 160.8 296 152 296H104C95.16 296 88 288.8 88 280V232zM280 216C288.8 216 296 223.2 296 232V280C296 288.8 288.8 296 280 296H232C223.2 296 216 288.8 216 280V232C216 223.2 223.2 216 232 216H280zM0 64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM48 64V448C48 456.8 55.16 464 64 464H144V400C144 373.5 165.5 352 192 352C218.5 352 240 373.5 240 400V464H320C328.8 464 336 456.8 336 448V64C336 55.16 328.8 48 320 48H64C55.16 48 48 55.16 48 64z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'far',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M464 128C437.5 128 416 107 416 81.01C416 76.01 417.8 69.74 420.6 62.87C420.9 62.17 421.2 61.46 421.6 60.74C430.5 40.51 448.1 15.86 457.6 3.281C460.8-1.094 467.2-1.094 470.4 3.281C483.4 20.65 512 61.02 512 81.01C512 102.7 497.1 120.8 476.8 126.3C472.7 127.4 468.4 128 464 128L464 128zM391.1 50.53C387.8 58.57 384 69.57 384 81.01C384 84.1 384.3 88.91 384.9 92.72C349.4 64.71 304.7 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 219.7 454.7 185.5 438.3 155.8C446.4 158.5 455.1 160 464 160C473.6 160 482.8 158.3 491.4 155.2C504.7 186.2 512 220.2 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 .0002 256 .0002C307.4 .0002 355.3 15.15 395.4 41.23C393.9 44.32 392.4 47.43 391.1 50.53V50.53zM255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.9 255.9 318.9C289 318.9 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1zM217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 119.1 227.4 119.1 224C119.1 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 175.1 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 231.1 206.1 231.1 224C231.1 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8L217.6 228.8zM377.6 228.8L377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8V228.8z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [512, 512, [127769, 9214], \"f186\", \"M421.6 379.9c-.6641 0-1.35 .0625-2.049 .1953c-11.24 2.143-22.37 3.17-33.32 3.17c-94.81 0-174.1-77.14-174.1-175.5c0-63.19 33.79-121.3 88.73-152.6c8.467-4.812 6.339-17.66-3.279-19.44c-11.2-2.078-29.53-3.746-40.9-3.746C132.3 31.1 32 132.2 32 256c0 123.6 100.1 224 223.8 224c69.04 0 132.1-31.45 173.8-82.93C435.3 389.1 429.1 379.9 421.6 379.9zM255.8 432C158.9 432 80 353 80 256c0-76.32 48.77-141.4 116.7-165.8C175.2 125 163.2 165.6 163.2 207.8c0 99.44 65.13 183.9 154.9 212.8C298.5 428.1 277.4 432 255.8 432z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"]\n};\nvar faFaceGrinTongueWink = {\n prefix: 'far',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.9 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM312.4 208C312.4 194.7 323.1 184 336.4 184C349.6 184 360.4 194.7 360.4 208C360.4 221.3 349.6 232 336.4 232C323.1 232 312.4 221.3 312.4 208zM256 208C256 163.8 291.8 128 336 128C380.2 128 416 163.8 416 208C416 252.2 380.2 288 336 288C291.8 288 256 252.2 256 208zM336 256C362.5 256 384 234.5 384 208C384 181.5 362.5 160 336 160C309.5 160 288 181.5 288 208C288 234.5 309.5 256 336 256zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4H348.3zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M64 464H288C296.8 464 304 456.8 304 448V384H352V448C352 483.3 323.3 512 288 512H64C28.65 512 0 483.3 0 448V224C0 188.7 28.65 160 64 160H128V208H64C55.16 208 48 215.2 48 224V448C48 456.8 55.16 464 64 464zM160 64C160 28.65 188.7 0 224 0H448C483.3 0 512 28.65 512 64V288C512 323.3 483.3 352 448 352H224C188.7 352 160 323.3 160 288V64zM224 304H448C456.8 304 464 296.8 464 288V64C464 55.16 456.8 48 448 48H224C215.2 48 208 55.16 208 64V288C208 296.8 215.2 304 224 304z\"]\n};\nvar faFaceAngry = {\n prefix: 'far',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M328.4 393.5C318.7 402.6 303.5 402.1 294.5 392.4C287.1 384.5 274.4 376 256 376C237.6 376 224.9 384.5 217.5 392.4C208.5 402.1 193.3 402.6 183.6 393.5C173.9 384.5 173.4 369.3 182.5 359.6C196.7 344.3 221.4 328 256 328C290.6 328 315.3 344.3 329.5 359.6C338.6 369.3 338.1 384.5 328.4 393.5zM144.4 240C144.4 231.2 147.9 223.2 153.7 217.4L122.9 207.2C114.6 204.4 110 195.3 112.8 186.9C115.6 178.6 124.7 174 133.1 176.8L229.1 208.8C237.4 211.6 241.1 220.7 239.2 229.1C236.4 237.4 227.3 241.1 218.9 239.2L208.1 235.6C208.3 237 208.4 238.5 208.4 240C208.4 257.7 194 272 176.4 272C158.7 272 144.4 257.7 144.4 240V240zM368.4 240C368.4 257.7 354 272 336.4 272C318.7 272 304.4 257.7 304.4 240C304.4 238.4 304.5 236.8 304.7 235.3L293.1 239.2C284.7 241.1 275.6 237.4 272.8 229.1C270 220.7 274.6 211.6 282.9 208.8L378.9 176.8C387.3 174 396.4 178.6 399.2 186.9C401.1 195.3 397.4 204.4 389.1 207.2L358.9 217.2C364.7 223 368.4 231.1 368.4 240H368.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faAngry = faFaceAngry;\nvar faRectangleXmark = {\n prefix: 'far',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM0 96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V96C464 87.16 456.8 80 448 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M501.6 4.186c-7.594-5.156-17.41-5.594-25.44-1.063L12.12 267.1C4.184 271.7-.5037 280.3 .0431 289.4c.5469 9.125 6.234 17.16 14.66 20.69l153.3 64.38v113.5c0 8.781 4.797 16.84 12.5 21.06C184.1 511 188 512 191.1 512c4.516 0 9.038-1.281 12.99-3.812l111.2-71.46l98.56 41.4c2.984 1.25 6.141 1.875 9.297 1.875c4.078 0 8.141-1.031 11.78-3.094c6.453-3.625 10.88-10.06 11.95-17.38l64-432C513.1 18.44 509.1 9.373 501.6 4.186zM369.3 119.2l-187.1 208.9L78.23 284.7L369.3 119.2zM215.1 444v-49.36l46.45 19.51L215.1 444zM404.8 421.9l-176.6-74.19l224.6-249.5L404.8 421.9z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M464.1 431C474.3 440.4 474.3 455.6 464.1 464.1C455.6 474.3 440.4 474.3 431 464.1L419.3 453.2C374.9 489.9 318.1 512 256 512C193.9 512 137.1 489.9 92.74 453.2L80.97 464.1C71.6 474.3 56.4 474.3 47.03 464.1C37.66 455.6 37.66 440.4 47.03 431L58.8 419.3C22.08 374.9 0 318.1 0 256C0 193.9 22.08 137.1 58.8 92.74L47.03 80.97C37.66 71.6 37.66 56.4 47.03 47.03C56.4 37.66 71.6 37.66 80.97 47.03L92.74 58.8C137.1 22.08 193.9 0 256 0C318.1 0 374.9 22.08 419.3 58.8L431 47.03C440.4 37.66 455.6 37.66 464.1 47.03C474.3 56.4 474.3 71.6 464.1 80.97L453.2 92.74C489.9 137.1 512 193.9 512 256C512 318.1 489.9 374.9 453.2 419.3L464.1 431zM304.8 338.7C290.5 347.2 273.8 352 256 352C238.2 352 221.5 347.2 207.2 338.7L126.9 419.1C162.3 447.2 207.2 464 256 464C304.8 464 349.7 447.2 385.1 419.1L304.8 338.7zM464 256C464 207.2 447.2 162.3 419.1 126.9L338.7 207.2C347.2 221.5 352 238.2 352 256C352 273.8 347.2 290.5 338.7 304.8L419.1 385.1C447.2 349.7 464 304.8 464 256V256zM256 48C207.2 48 162.3 64.8 126.9 92.93L207.2 173.3C221.5 164.8 238.2 160 256 160C273.8 160 290.5 164.8 304.8 173.3L385.1 92.93C349.7 64.8 304.8 48 256 48V48zM173.3 304.8C164.8 290.5 160 273.8 160 256C160 238.2 164.8 221.5 173.3 207.2L92.93 126.9C64.8 162.3 48 207.2 48 256C48 304.8 64.8 349.7 92.93 385.1L173.3 304.8zM256 208C229.5 208 208 229.5 208 256C208 282.5 229.5 304 256 304C282.5 304 304 282.5 304 256C304 229.5 282.5 208 256 208z\"]\n};\nvar faFaceGrimace = {\n prefix: 'far',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M344 288C374.9 288 400 313.1 400 344C400 374.9 374.9 400 344 400H168C137.1 400 112 374.9 112 344C112 313.1 137.1 288 168 288H344zM168 320C154.7 320 144 330.7 144 344C144 357.3 154.7 368 168 368H176V320H168zM208 368H240V320H208V368zM304 320H272V368H304V320zM336 368H344C357.3 368 368 357.3 368 344C368 330.7 357.3 320 344 320H336V368zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M152 352C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H152zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faCircleXmark = {\n prefix: 'far',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M96 191.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64c17.67 0 32-14.33 32-31.1V223.1C128 206.3 113.7 191.1 96 191.1zM512 227c0-36.89-30.05-66.92-66.97-66.92h-99.86C354.7 135.1 360 113.5 360 100.8c0-33.8-26.2-68.78-70.06-68.78c-46.61 0-59.36 32.44-69.61 58.5c-31.66 80.5-60.33 66.39-60.33 93.47c0 12.84 10.36 23.99 24.02 23.99c5.256 0 10.55-1.721 14.97-5.26c76.76-61.37 57.97-122.7 90.95-122.7c16.08 0 22.06 12.75 22.06 20.79c0 7.404-7.594 39.55-25.55 71.59c-2.046 3.646-3.066 7.686-3.066 11.72c0 13.92 11.43 23.1 24 23.1h137.6C455.5 208.1 464 216.6 464 227c0 9.809-7.766 18.03-17.67 18.71c-12.66 .8593-22.36 11.4-22.36 23.94c0 15.47 11.39 15.95 11.39 28.91c0 25.37-35.03 12.34-35.03 42.15c0 11.22 6.392 13.03 6.392 22.25c0 22.66-29.77 13.76-29.77 40.64c0 4.515 1.11 5.961 1.11 9.456c0 10.45-8.516 18.95-18.97 18.95h-52.53c-25.62 0-51.02-8.466-71.5-23.81l-36.66-27.51c-4.315-3.245-9.37-4.811-14.38-4.811c-13.85 0-24.03 11.38-24.03 24.04c0 7.287 3.312 14.42 9.596 19.13l36.67 27.52C235 468.1 270.6 480 306.6 480h52.53c35.33 0 64.36-27.49 66.8-62.2c17.77-12.23 28.83-32.51 28.83-54.83c0-3.046-.2187-6.107-.6406-9.122c17.84-12.15 29.28-32.58 29.28-55.28c0-5.311-.6406-10.54-1.875-15.64C499.9 270.1 512 250.2 512 227z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M0 456C0 442.7 10.75 432 24 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H24C10.75 480 0 469.3 0 456z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M512 0V512H0V0H512zM464 48H48V464H464V48z\"]\n};\nvar faNoteSticky = {\n prefix: 'far',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M384 32H64.01C28.66 32 .0085 60.65 .0065 96L0 415.1C-.002 451.3 28.65 480 64 480h232.1c25.46 0 49.88-10.12 67.89-28.12l55.88-55.89C437.9 377.1 448 353.6 448 328.1V96C448 60.8 419.2 32 384 32zM52.69 427.3C50.94 425.6 48 421.8 48 416l.0195-319.1C48.02 87.18 55.2 80 64.02 80H384c8.674 0 16 7.328 16 16v192h-88C281.1 288 256 313.1 256 344v88H64C58.23 432 54.44 429.1 52.69 427.3zM330.1 417.9C322.9 425.1 313.8 429.6 304 431.2V344c0-4.406 3.594-8 8-8h87.23c-1.617 9.812-6.115 18.88-13.29 26.05L330.1 417.9z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faFaceSadTear = {\n prefix: 'far',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M169.6 291.3C172.8 286.9 179.2 286.9 182.4 291.3C195.6 308.6 223.1 349 223.1 369C223.1 395 202.5 416 175.1 416C149.5 416 127.1 395 127.1 369C127.1 349 156.6 308.6 169.6 291.3H169.6zM368 346.8C377.9 355.6 378.7 370.8 369.9 380.7C361 390.6 345.9 391.4 335.1 382.6C314.7 363.5 286.7 352 256 352C242.7 352 232 341.3 232 328C232 314.7 242.7 304 256 304C299 304 338.3 320.2 368 346.8L368 346.8zM335.6 176C353.3 176 367.6 190.3 367.6 208C367.6 225.7 353.3 240 335.6 240C317.1 240 303.6 225.7 303.6 208C303.6 190.3 317.1 176 335.6 176zM175.6 240C157.1 240 143.6 225.7 143.6 208C143.6 190.3 157.1 176 175.6 176C193.3 176 207.6 190.3 207.6 208C207.6 225.7 193.3 240 175.6 240zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM175.9 448C200.5 458.3 227.6 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 308.7 67.59 356.8 99.88 393.4C110.4 425.4 140.9 447.9 175.9 448V448z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M264 480h104c79.4 0 144-62.95 144-140.3V231.8c0-23.44-6.104-46.73-17.65-67.35L462.1 108.6C447.5 81.1 417.1 64 385.9 64H336c-27.23 0-51.53 12.51-67.69 32H72C32.3 96 0 128.3 0 168S32.3 240 72 240h56.44C128.1 242.6 128 245.3 128 248c0 25.95 13.79 48.73 34.43 61.4C160.8 315.3 160 321.6 160 328c0 25.95 13.79 48.73 34.43 61.4C192.8 395.3 192 401.6 192 408C192 447.7 224.3 480 264 480zM280 304c13.23 0 24 10.78 24 24S293.1 352 279.9 352H232c-13.23 0-24-10.78-24-24S218.8 304 232 304H280zM248 224v12c0 12.39 3.264 23.93 8.545 34.27C253.9 271.3 251 272 248 272h-48C186.8 272 176 261.2 176 248S186.8 224 200 224H248zM248 144c.2813 0 .5137 .1504 .793 .1602C248.6 146.8 248 149.3 248 152V192h-176C58.77 192 48 181.2 48 168S58.77 144 72 144H248zM388.2 429.9C390.4 422.9 392 415.7 392 408c0-29.04-17.37-53.96-42.18-65.34C350.8 337.8 352 333 352 328c0-7.139-1.273-13.96-3.355-20.46C378.4 297.2 400 269.2 400 236V184C400 170.8 389.3 160 376 160S352 170.8 352 184v52c0 15.44-12.56 28-28 28S296 251.4 296 236V152c0-22.06 17.94-40 40-40h49.88c14.77 0 28.28 7.719 35.27 20.16l31.34 55.78C460 201.4 464 216.6 464 231.8v107.9C464 383.9 431.4 420.9 388.2 429.9zM264 432c-13.23 0-24-10.78-24-24S250.8 384 264 384H320c13.23 0 24 10.78 24 24S333.2 432 320 432H264z\"]\n};\nvar icons = {\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faHandPointRight: faHandPointRight,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faLightbulb: faLightbulb,\n faFlag: faFlag,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faEyeSlash: faEyeSlash,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faHandSpock: faHandSpock,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faBookmark: faBookmark,\n faHandPointDown: faHandPointDown,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faUser: faUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faStar: faStar,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faClipboard: faClipboard,\n faChessQueen: faChessQueen,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faImage: faImage,\n faFolderClosed: faFolderClosed,\n faLemon: faLemon,\n faHandshake: faHandshake,\n faGem: faGem,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faIdBadge: faIdBadge,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faEnvelopeOpen: faEnvelopeOpen,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExcel: faFileExcel,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faHeart: faHeart,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faCircle: faCircle,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faFileAudio: faFileAudio,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faFileCode: faFileCode,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandPointer: faHandPointer,\n faHandScissors: faHandScissors,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faFileVideo: faFileVideo,\n faFilePdf: faFilePdf,\n faComment: faComment,\n faEnvelope: faEnvelope,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faCalendarCheck: faCalendarCheck,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faCalendarPlus: faCalendarPlus,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faKeyboard: faKeyboard,\n faClosedCaptioning: faClosedCaptioning,\n faImages: faImages,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faSun: faSun,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faThumbsDown: faThumbsDown,\n faChessPawn: faChessPawn,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faBell: faBell,\n faFile: faFile,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faChessRook: faChessRook,\n faStarHalf: faStarHalf,\n faChessKing: faChessKing,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faCopy: faCopy,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faCopyright: faCopyright,\n faMap: faMap,\n faBellSlash: faBellSlash,\n faHandLizard: faHandLizard,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faHandPeace: faHandPeace,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faBuilding: faBuilding,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faMoon: faMoon,\n faCalendar: faCalendar,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faClone: faClone,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faPaperPlane: faPaperPlane,\n faLifeRing: faLifeRing,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faThumbsUp: faThumbsUp,\n faWindowMinimize: faWindowMinimize,\n faSquareFull: faSquareFull,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faHandPointLeft: faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n","var prefix = \"fab\";\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faCloudflare = {\n prefix: 'fab',\n iconName: 'cloudflare',\n icon: [640, 512, [], \"e07d\", \"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faGuilded = {\n prefix: 'fab',\n iconName: 'guilded',\n icon: [448, 512, [], \"e07e\", \"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faSquareJs = {\n prefix: 'fab',\n iconName: 'square-js',\n icon: [448, 512, [\"js-square\"], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = faSquareJs;\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [448, 512, [], \"e049\", \"M243.583 91.6027L323.695 138.384C326.575 140.026 326.68 144.583 323.695 146.225L228.503 201.854C225.623 203.55 222.22 203.444 219.549 201.854L124.357 146.225C121.425 144.636 121.373 139.973 124.357 138.384L204.417 91.6027V0L0 119.417V358.252L78.3843 312.477V218.914C78.3319 215.576 82.2066 213.192 85.0865 214.993L180.279 270.622C183.159 272.318 184.782 275.338 184.782 278.464V389.669C184.834 393.007 180.959 395.391 178.079 393.589L97.9673 346.808L19.583 392.583L224 512L428.417 392.583L350.033 346.808L269.921 393.589C267.093 395.338 263.114 393.06 263.218 389.669V278.464C263.218 275.126 265.051 272.159 267.721 270.622L362.914 214.993C365.741 213.245 369.72 215.47 369.616 218.914V312.477L448 358.252V119.417L243.583 0V91.6027Z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [448, 512, [], \"f189\", \"M31.4907 63.4907C0 94.9813 0 145.671 0 247.04V264.96C0 366.329 0 417.019 31.4907 448.509C62.9813 480 113.671 480 215.04 480H232.96C334.329 480 385.019 480 416.509 448.509C448 417.019 448 366.329 448 264.96V247.04C448 145.671 448 94.9813 416.509 63.4907C385.019 32 334.329 32 232.96 32H215.04C113.671 32 62.9813 32 31.4907 63.4907ZM75.6 168.267H126.747C128.427 253.76 166.133 289.973 196 297.44V168.267H244.16V242C273.653 238.827 304.64 205.227 315.093 168.267H363.253C359.313 187.435 351.46 205.583 340.186 221.579C328.913 237.574 314.461 251.071 297.733 261.227C316.41 270.499 332.907 283.63 346.132 299.751C359.357 315.873 369.01 334.618 374.453 354.747H321.44C316.555 337.262 306.614 321.61 292.865 309.754C279.117 297.899 262.173 290.368 244.16 288.107V354.747H238.373C136.267 354.747 78.0267 284.747 75.6 168.267Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faSquareReddit = {\n prefix: 'fab',\n iconName: 'square-reddit',\n icon: [448, 512, [\"reddit-square\"], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedditSquare = faSquareReddit;\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faSquareFontAwesome = {\n prefix: 'fab',\n iconName: 'square-font-awesome',\n icon: [448, 512, [], \"e5ad\", \"M384.5,32.5h-320c-35.3,0-64,28.7-64,64v320c0,35.3,28.7,64,64,64h320c35.3,0,64-28.7,64-64v-320 C448.5,61.2,419.8,32.5,384.5,32.5z M336.5,312.5c-31.6,11.2-41.2,16-59.8,16c-31.4,0-43.2-16-74.6-16c-10.2,0-18.2,1.6-25.6,4v-32 c7.4-2.2,15.4-4,25.6-4c31.2,0,43.2,16,74.6,16c10.2,0,17.8-1.4,27.8-4.6v-96c-10,3.2-17.6,4.6-27.8,4.6c-31.4,0-43.2-16-74.6-16 c-25.4,0-37.4,10.4-57.6,14.4v153.6c0,8.8-7.2,16-16,16c-8.8,0-16-7.2-16-16v-192c0-8.8,7.2-16,16-16c8.8,0,16,7.2,16,16v6.4 c20.2-4,32.2-14.4,57.6-14.4c31.2,0,43.2,16,74.6,16c18.6,0,28.2-4.8,59.8-16V312.5z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSquareInstagram = {\n prefix: 'fab',\n iconName: 'square-instagram',\n icon: [448, 512, [\"instagram-square\"], \"e055\", \"M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z\"]\n};\nvar faInstagramSquare = faSquareInstagram;\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faSquareHackerNews = {\n prefix: 'fab',\n iconName: 'square-hacker-news',\n icon: [448, 512, [\"hacker-news-square\"], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = faSquareHackerNews;\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faSquareSnapchat = {\n prefix: 'fab',\n iconName: 'square-snapchat',\n icon: [448, 512, [\"snapchat-square\"], \"f2ad\", \"M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm-3.907,319.309-.083.1a32.364,32.364,0,0,1-8.717,6.823,90.26,90.26,0,0,1-20.586,8.2,12.694,12.694,0,0,0-3.852,1.76c-2.158,1.909-2.1,4.64-4.4,8.55a23.137,23.137,0,0,1-6.84,7.471c-6.707,4.632-14.244,4.923-22.23,5.23-7.214.274-15.39.581-24.729,3.669-3.761,1.245-7.753,3.694-12.377,6.533-11.265,6.9-26.68,16.353-52.3,16.353s-40.925-9.4-52.106-16.279c-4.657-2.888-8.675-5.362-12.543-6.64-9.339-3.08-17.516-3.4-24.729-3.67-7.986-.307-15.523-.6-22.231-5.229a23.085,23.085,0,0,1-6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.428,13.428,0,0,0-4.1-1.834,89.986,89.986,0,0,1-20.313-8.127,32.905,32.905,0,0,1-8.3-6.284c-6.583-6.757-8.276-14.776-5.686-21.824,3.436-9.338,11.571-12.111,19.4-16.262,14.776-8.027,26.348-18.055,34.433-29.884a68.236,68.236,0,0,0,5.985-10.567c.789-2.158.772-3.329.241-4.416a7.386,7.386,0,0,0-2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.245a28.4,28.4,0,0,1-1.369-23.584c4.134-10.924,14.469-17.706,26.978-17.706a37.141,37.141,0,0,1,7.845.83c.689.15,1.37.307,2.042.482-.108-7.43.058-15.357.722-23.119,2.358-27.261,11.912-41.589,21.874-52.994a86.836,86.836,0,0,1,22.28-17.931C188.254,100.383,205.312,96,224,96s35.828,4.383,50.944,13.016a87.169,87.169,0,0,1,22.239,17.9c9.961,11.406,19.516,25.709,21.874,52.995a231.194,231.194,0,0,1,.713,23.118c.673-.174,1.362-.332,2.051-.481a37.131,37.131,0,0,1,7.844-.83c12.5,0,22.82,6.782,26.971,17.706a28.37,28.37,0,0,1-1.4,23.559c-2.74,5.2-7.123,9.861-13.39,14.244-1.668,1.187-4.258,2.864-7.529,4.981-1.835,1.187-4.541,2.947-7.164,4.682a6.856,6.856,0,0,0-1.951,2.034c-.506,1.046-.539,2.191.166,4.208a69.015,69.015,0,0,0,6.085,10.792c8.268,12.1,20.188,22.313,35.454,30.407,1.486.772,2.98,1.5,4.441,2.258.722.332,1.569.763,2.491,1.3,4.9,2.723,9.2,6.01,11.455,12.153C387.821,336.915,386.269,344.7,380.093,351.309Zm-16.719-18.461c-50.313-24.314-58.332-61.918-58.689-64.749-.431-3.379-.921-6.035,2.806-9.472,3.594-3.328,19.541-13.19,23.965-16.278,7.33-5.114,10.534-10.219,8.16-16.495-1.66-4.316-5.686-5.976-9.961-5.976a18.5,18.5,0,0,0-3.993.448c-8.035,1.743-15.838,5.769-20.354,6.857a7.1,7.1,0,0,1-1.66.224c-2.408,0-3.279-1.071-3.088-3.968.564-8.783,1.759-25.925.373-41.937-1.884-22.032-8.99-32.948-17.432-42.6-4.051-4.624-23.135-24.654-59.536-24.654S168.53,134.359,164.479,139c-8.434,9.654-15.531,20.57-17.432,42.6-1.386,16.013-.141,33.147.373,41.937.166,2.756-.68,3.968-3.088,3.968a7.1,7.1,0,0,1-1.66-.224c-4.507-1.087-12.31-5.113-20.346-6.856a18.494,18.494,0,0,0-3.993-.449c-4.25,0-8.3,1.636-9.961,5.977-2.374,6.276.847,11.381,8.168,16.494,4.425,3.088,20.371,12.958,23.966,16.279,3.719,3.437,3.237,6.093,2.805,9.471-.356,2.79-8.384,40.394-58.689,64.749-2.946,1.428-7.96,4.45.88,9.331,13.88,7.628,23.111,6.807,30.3,11.43,6.093,3.927,2.5,12.394,6.923,15.449,5.454,3.76,21.583-.266,42.335,6.6,17.433,5.744,28.116,22.015,58.963,22.015s41.788-16.3,58.938-21.973c20.795-6.865,36.89-2.839,42.336-6.6,4.433-3.055.822-11.522,6.923-15.448,7.181-4.624,16.411-3.8,30.3-11.472C371.36,337.355,366.346,334.333,363.374,332.848Z\"]\n};\nvar faSnapchatSquare = faSquareSnapchat;\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [512, 512, [], \"f2b3\", \"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faSquareFontAwesomeStroke = {\n prefix: 'fab',\n iconName: 'square-font-awesome-stroke',\n icon: [448, 512, [\"font-awesome-alt\"], \"f35c\", \"M201.6,152c-25.4,0-37.4,10.4-57.6,14.4V160c0-8.8-7.2-16-16-16s-16,7.2-16,16v192c0,0.8,0.1,1.6,0.2,2.4 c0.1,0.4,0.1,0.8,0.2,1.2c1.6,7.1,8,12.4,15.6,12.4s14-5.3,15.6-12.4c0.1-0.4,0.2-0.8,0.2-1.2c0.1-0.8,0.2-1.6,0.2-2.4V198.4 c4-0.8,7.7-1.8,11.2-3c14.3-4.7,26-11.4,46.4-11.4c31.4,0,43.2,16,74.6,16c8.9,0,15.9-1.1,24.2-3.5c1.2-0.3,2.4-0.7,3.6-1.1v96 c-10,3.2-17.6,4.6-27.8,4.6c-31.4,0-43.4-16-74.6-16c-10.2,0-18.2,1.8-25.6,4v32c7.4-2.4,15.4-4,25.6-4c31.4,0,43.2,16,74.6,16 c18.6,0,28.2-4.8,59.8-16V152c-31.6,11.2-41.2,16-59.8,16C244.8,168,232.8,152,201.6,152z M384,32H64C28.7,32,0,60.7,0,96v320 c0,35.3,28.7,64,64,64h320c35.3,0,64-28.7,64-64V96C448,60.7,419.3,32,384,32z M416,416c0,17.6-14.4,32-32,32H64 c-17.6,0-32-14.4-32-32V96c0-17.6,14.4-32,32-32h320c17.6,0,32,14.4,32,32V416z\"]\n};\nvar faFontAwesomeAlt = faSquareFontAwesomeStroke;\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faWatchmanMonitoring = {\n prefix: 'fab',\n iconName: 'watchman-monitoring',\n icon: [512, 512, [], \"e087\", \"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faSquareViadeo = {\n prefix: 'fab',\n iconName: 'square-viadeo',\n icon: [448, 512, [\"viadeo-square\"], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViadeoSquare = faSquareViadeo;\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faSquareDribbble = {\n prefix: 'fab',\n iconName: 'square-dribbble',\n icon: [448, 512, [\"dribbble-square\"], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDribbbleSquare = faSquareDribbble;\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faInstalod = {\n prefix: 'fab',\n iconName: 'instalod',\n icon: [512, 512, [], \"e081\", \"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSquareTwitter = {\n prefix: 'fab',\n iconName: 'square-twitter',\n icon: [448, 512, [\"twitter-square\"], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTwitterSquare = faSquareTwitter;\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faGolang = {\n prefix: 'fab',\n iconName: 'golang',\n icon: [640, 512, [], \"e40f\", \"M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faUncharted = {\n prefix: 'fab',\n iconName: 'uncharted',\n icon: [448, 512, [], \"e084\", \"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faSquareYoutube = {\n prefix: 'fab',\n iconName: 'square-youtube',\n icon: [448, 512, [61798, \"youtube-square\"], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faYoutubeSquare = faSquareYoutube;\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [\"rendact\"], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faRendact = faWpressr;\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faNfcDirectional = {\n prefix: 'fab',\n iconName: 'nfc-directional',\n icon: [512, 512, [], \"e530\", \"M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faMeta = {\n prefix: 'fab',\n iconName: 'meta',\n icon: [640, 512, [], \"e49b\", \"M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [640, 512, [], \"f392\", \"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [512, 512, [], \"f268\", \"M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [62107], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faUnsplash = {\n prefix: 'fab',\n iconName: 'unsplash',\n icon: [448, 512, [], \"e07c\", \"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faSquareSteam = {\n prefix: 'fab',\n iconName: 'square-steam',\n icon: [448, 512, [\"steam-square\"], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSquare = faSquareSteam;\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faSquareVimeo = {\n prefix: 'fab',\n iconName: 'square-vimeo',\n icon: [448, 512, [\"vimeo-square\"], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoSquare = faSquareVimeo;\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384C385 407 366 416 329 416C266 416 242 384 179 384C159 384 143 388 128 392V328C143 324 159 320 179 320C242 320 266 352 329 352C349 352 364 349 384 343V135C364 141 349 144 329 144C266 144 242 112 179 112C128 112 104 133 64 141V448C64 466 50 480 32 480S0 466 0 448V64C0 46 14 32 32 32S64 46 64 64V77C104 69 128 48 179 48C242 48 266 80 329 80C366 80 385 71 448 48Z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faHive = {\n prefix: 'fab',\n iconName: 'hive',\n icon: [512, 512, [], \"e07f\", \"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faPadlet = {\n prefix: 'fab',\n iconName: 'padlet',\n icon: [640, 512, [], \"e4a0\", \"M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faSquareGithub = {\n prefix: 'fab',\n iconName: 'square-github',\n icon: [448, 512, [\"github-square\"], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGithubSquare = faSquareGithub;\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faShopify = {\n prefix: 'fab',\n iconName: 'shopify',\n icon: [448, 512, [], \"e057\", \"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faSquareGitlab = {\n prefix: 'fab',\n iconName: 'square-gitlab',\n icon: [448, 512, [\"gitlab-square\"], \"e5ae\", \"M48 32H400C426.5 32 448 53.5 448 80V432C448 458.5 426.5 480 400 480H48C21.5 480 0 458.5 0 432V80C0 53.5 21.5 32 48 32zM382.1 224.9L337.5 108.5C336.6 106.2 334.9 104.2 332.9 102.9C331.3 101.9 329.5 101.3 327.7 101.1C325.9 100.9 324 101.2 322.3 101.8C320.6 102.5 319 103.5 317.8 104.9C316.6 106.3 315.7 107.9 315.2 109.7L285 201.9H162.1L132.9 109.7C132.4 107.9 131.4 106.3 130.2 104.9C128.1 103.6 127.4 102.5 125.7 101.9C123.1 101.2 122.1 100.1 120.3 101.1C118.5 101.3 116.7 101.9 115.1 102.9C113.1 104.2 111.5 106.2 110.6 108.5L65.94 224.9L65.47 226.1C59.05 242.9 58.26 261.3 63.22 278.6C68.18 295.9 78.62 311.1 92.97 321.9L93.14 322L93.52 322.3L161.4 373.2L215.6 414.1C217.1 415.1 220.9 416.9 223.9 416.9C226.9 416.9 229.9 415.1 232.3 414.1L286.4 373.2L354.8 322L355 321.9C369.4 311 379.8 295.8 384.8 278.6C389.7 261.3 388.1 242.9 382.5 226.1L382.1 224.9z\"]\n};\nvar faGitlabSquare = faSquareGitlab;\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M366.036,186.867l-59.5,36.871-.838,36.871-29.329-19.273-39.384,24.3c2.238,55.211,2.483,59.271,2.51,59.5l-97.2,65.359L127.214,285.748l108.1-62.01L195.09,197.761l-75.417,38.547L98.723,93.015,227.771,43.574,136.432,0,10.737,39.385,38.39,174.3l41.9,32.681L48.445,222.062,69.394,323.457,98.723,351.11,77.774,363.679l16.76,78.769L160.733,512c-10.8-74.842-11.658-78.641-11.725-78.773l77.925-55.3c16.759-12.57,15.083-10.894,15.083-10.894l.838,24.3,33.519,28.491-.838-77.093,46.927-33.519,26.815-18.435-2.514,36.033,25.139,17.6,6.7-74.579,58.657-43.575Z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faSquareOdnoklassniki = {\n prefix: 'fab',\n iconName: 'square-odnoklassniki',\n icon: [448, 512, [\"odnoklassniki-square\"], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOdnoklassnikiSquare = faSquareOdnoklassniki;\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faHashnode = {\n prefix: 'fab',\n iconName: 'hashnode',\n icon: [512, 512, [], \"e499\", \"M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faSquarePinterest = {\n prefix: 'fab',\n iconName: 'square-pinterest',\n icon: [448, 512, [\"pinterest-square\"], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPinterestSquare = faSquarePinterest;\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [512, 512, [], \"f19e\", \"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"]\n};\nvar faDailymotion = {\n prefix: 'fab',\n iconName: 'dailymotion',\n icon: [448, 512, [], \"e052\", \"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [576, 512, [], \"f836\", \"M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faNfcSymbol = {\n prefix: 'fab',\n iconName: 'nfc-symbol',\n icon: [576, 512, [], \"e531\", \"M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faSquareGooglePlus = {\n prefix: 'fab',\n iconName: 'square-google-plus',\n icon: [448, 512, [\"google-plus-square\"], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGooglePlusSquare = faSquareGooglePlus;\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faSquareXing = {\n prefix: 'fab',\n iconName: 'square-xing',\n icon: [448, 512, [\"xing-square\"], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faXingSquare = faSquareXing;\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [512, 512, [], \"f2d5\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faBilibili = {\n prefix: 'fab',\n iconName: 'bilibili',\n icon: [512, 512, [], \"e3d9\", \"M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar fa42Group = {\n prefix: 'fab',\n iconName: '42-group',\n icon: [640, 512, [\"innosoft\"], \"e080\", \"M320 96V416C341.011 416 361.818 411.861 381.23 403.821C400.641 395.78 418.28 383.995 433.138 369.138C447.995 354.28 459.78 336.641 467.821 317.23C475.861 297.818 480 277.011 480 256C480 234.989 475.861 214.182 467.821 194.771C459.78 175.359 447.995 157.72 433.138 142.863C418.28 128.005 400.641 116.22 381.23 108.179C361.818 100.139 341.011 96 320 96ZM0 256L160.002 416L320.003 256L160.002 96L0 256ZM480 256C480 277.011 484.138 297.818 492.179 317.23C500.219 336.643 512.005 354.28 526.862 369.138C541.72 383.995 559.357 395.781 578.77 403.821C598.182 411.862 618.989 416 640 416V96C597.565 96 556.869 112.858 526.862 142.863C496.857 172.869 480 213.565 480 256Z\"]\n};\nvar faInnosoft = fa42Group;\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [512, 512, [], \"f430\", \"M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z\"]\n};\nvar faSquarePiedPiper = {\n prefix: 'fab',\n iconName: 'square-pied-piper',\n icon: [448, 512, [\"pied-piper-square\"], \"e01e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPiedPiperSquare = faSquarePiedPiper;\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faTiktok = {\n prefix: 'fab',\n iconName: 'tiktok',\n icon: [448, 512, [], \"e07b\", \"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"]\n};\nvar faSquareFacebook = {\n prefix: 'fab',\n iconName: 'square-facebook',\n icon: [448, 512, [\"facebook-square\"], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFacebookSquare = faSquareFacebook;\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"]\n};\nvar faMixer = {\n prefix: 'fab',\n iconName: 'mixer',\n icon: [512, 512, [], \"e056\", \"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"]\n};\nvar faSquareLastfm = {\n prefix: 'fab',\n iconName: 'square-lastfm',\n icon: [448, 512, [\"lastfm-square\"], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLastfmSquare = faSquareLastfm;\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faCmplid = {\n prefix: 'fab',\n iconName: 'cmplid',\n icon: [640, 512, [], \"e360\", \"M226.119,388.165a3.816,3.816,0,0,0-2.294-3.5,3.946,3.946,0,0,0-1.629-.385L72.6,384.3a19.243,19.243,0,0,1-17.924-26.025L81.585,255.692a35.72,35.72,0,0,1,32.373-26H262.525a7.07,7.07,0,0,0,6.392-5.194l10.769-41.131a3.849,3.849,0,0,0-2.237-4.937,3.755,3.755,0,0,0-1.377-.261c-.063,0-.126,0-.189.005H127.38a106.8,106.8,0,0,0-96.99,77.1L3.483,358.824A57.469,57.469,0,0,0,57.314,436q1.43,0,2.86-.072H208.742a7.131,7.131,0,0,0,6.391-5.193L225.839,389.6A3.82,3.82,0,0,0,226.119,388.165ZM306.658,81.2a3.861,3.861,0,0,0,.251-1.367A3.813,3.813,0,0,0,303.079,76c-.064,0-.128,0-.192,0h-41A7.034,7.034,0,0,0,255.5,81.2l-21.347,80.915h51.131ZM180.364,368.249H231.5L263.452,245.69H212.321ZM511.853,79.723a3.809,3.809,0,0,0-3.8-3.661c-.058,0-.137,0-.23.007h-41a7.1,7.1,0,0,0-6.584,5.129L368.91,430.634a3.54,3.54,0,0,0-.262,1.335,3.873,3.873,0,0,0,3.864,3.863c.056,0,.112,0,.169,0h41a7.068,7.068,0,0,0,6.392-5.193L511.533,81.2A3.624,3.624,0,0,0,511.853,79.723ZM324.649,384.47h-41a7.2,7.2,0,0,0-6.392,5.194L266.52,430.8a3.662,3.662,0,0,0-.268,1.374A3.783,3.783,0,0,0,270.023,436c.06,0,.166,0,.3-.012h40.905a7.036,7.036,0,0,0,6.391-5.193l10.769-41.131a3.75,3.75,0,0,0-3.445-5.208c-.108,0-.217,0-.326.014Zm311.324-308.4h-41a7.066,7.066,0,0,0-6.392,5.129l-91.46,349.436a4.073,4.073,0,0,0-.229,1.347,3.872,3.872,0,0,0,3.863,3.851c.056,0,.112,0,.169,0h40.968a7.1,7.1,0,0,0,6.392-5.193L639.68,81.2a3.624,3.624,0,0,0,.32-1.475,3.841,3.841,0,0,0-3.821-3.564c-.068,0-.137,0-.206.006ZM371.562,225.236l10.8-41.1a4.369,4.369,0,0,0,.227-1.388,3.869,3.869,0,0,0-3.861-3.842c-.057,0-.113,0-.169,0h-41.1a7.292,7.292,0,0,0-6.391,5.226l-10.834,41.1a4.417,4.417,0,0,0-.26,1.493c0,.069,0,.138,0,.206a3.776,3.776,0,0,0,3.757,3.507c.076,0,.18,0,.3-.012h41.129A7.034,7.034,0,0,0,371.562,225.236Z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [62000], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [61810], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z\"]\n};\nvar faDeezer = {\n prefix: 'fab',\n iconName: 'deezer',\n icon: [576, 512, [], \"e077\", \"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faScreenpal = {\n prefix: 'fab',\n iconName: 'screenpal',\n icon: [512, 512, [], \"e570\", \"M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"e01a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faWirsindhandwerk = {\n prefix: 'fab',\n iconName: 'wirsindhandwerk',\n icon: [512, 512, [\"wsh\"], \"e2d0\", \"M50.77161,479.81213h83.36071V367.84741l-83.36071,47.009Zm329.04675,0h82.35022V414.85645l-82.35022-47.009Zm.00568-448V251.568L256.1759,179.1861,134.50378,251.568V31.81213H50.77161V392.60565L256.1759,270.31909,462.16858,392.60565V31.81213Z\"]\n};\nvar faWsh = faWirsindhandwerk;\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faOctopusDeploy = {\n prefix: 'fab',\n iconName: 'octopus-deploy',\n icon: [512, 512, [], \"e082\", \"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [512, 512, [62124, \"snapchat-ghost\"], \"f2ab\", \"M496.926,366.6c-3.373-9.176-9.8-14.086-17.112-18.153-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.609-27.341-52.959-45.42a102.889,102.889,0,0,1-9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.221,10.221,0,0,1,2.914-3.038c3.918-2.591,7.96-5.22,10.7-6.993,4.885-3.162,8.754-5.667,11.246-7.44,9.362-6.547,15.909-13.5,20-21.278a42.371,42.371,0,0,0,2.1-35.191c-6.2-16.318-21.613-26.449-40.287-26.449a55.543,55.543,0,0,0-11.718,1.24c-1.029.224-2.059.459-3.063.72.174-11.16-.074-22.94-1.066-34.534-3.522-40.758-17.794-62.123-32.674-79.16A130.167,130.167,0,0,0,332.1,36.443C309.515,23.547,283.91,17,256,17S202.6,23.547,180,36.443a129.735,129.735,0,0,0-33.281,26.783c-14.88,17.038-29.152,38.44-32.673,79.161-.992,11.594-1.24,23.435-1.079,34.533-1-.26-2.021-.5-3.051-.719a55.461,55.461,0,0,0-11.717-1.24c-18.687,0-34.125,10.131-40.3,26.449a42.423,42.423,0,0,0,2.046,35.228c4.105,7.774,10.652,14.731,20.014,21.278,2.48,1.736,6.361,4.24,11.246,7.44,2.641,1.711,6.5,4.216,10.28,6.72a11.054,11.054,0,0,1,3.3,3.311c.794,1.624.818,3.373-.36,6.6a102.02,102.02,0,0,1-8.94,15.785c-12.077,17.669-29.363,32.648-51.434,44.639C32.355,348.608,20.2,352.75,15.069,366.7c-3.868,10.528-1.339,22.506,8.494,32.6a49.137,49.137,0,0,0,12.4,9.387,134.337,134.337,0,0,0,30.342,12.139,20.024,20.024,0,0,1,6.126,2.741c3.583,3.137,3.075,7.861,7.849,14.78a34.468,34.468,0,0,0,8.977,9.127c10.019,6.919,21.278,7.353,33.207,7.811,10.776.41,22.989.881,36.939,5.481,5.778,1.91,11.78,5.605,18.736,9.92C194.842,480.951,217.707,495,255.973,495s61.292-14.123,78.118-24.428c6.907-4.24,12.872-7.9,18.489-9.758,13.949-4.613,26.163-5.072,36.939-5.481,11.928-.459,23.187-.893,33.206-7.812a34.584,34.584,0,0,0,10.218-11.16c3.434-5.84,3.348-9.919,6.572-12.771a18.971,18.971,0,0,1,5.753-2.629A134.893,134.893,0,0,0,476.02,408.71a48.344,48.344,0,0,0,13.019-10.193l.124-.149C498.389,388.5,500.708,376.867,496.926,366.6Zm-34.013,18.277c-20.745,11.458-34.533,10.23-45.259,17.137-9.114,5.865-3.72,18.513-10.342,23.076-8.134,5.617-32.177-.4-63.239,9.858-25.618,8.469-41.961,32.822-88.038,32.822s-62.036-24.3-88.076-32.884c-31-10.255-55.092-4.241-63.239-9.858-6.609-4.563-1.24-17.211-10.341-23.076-10.739-6.907-24.527-5.679-45.26-17.075-13.206-7.291-5.716-11.8-1.314-13.937,75.143-36.381,87.133-92.552,87.666-96.719.645-5.046,1.364-9.014-4.191-14.148-5.369-4.96-29.189-19.7-35.8-24.316-10.937-7.638-15.748-15.264-12.2-24.638,2.48-6.485,8.531-8.928,14.879-8.928a27.643,27.643,0,0,1,5.965.67c12,2.6,23.659,8.617,30.392,10.242a10.749,10.749,0,0,0,2.48.335c3.6,0,4.86-1.811,4.612-5.927-.768-13.132-2.628-38.725-.558-62.644,2.84-32.909,13.442-49.215,26.04-63.636,6.051-6.932,34.484-36.976,88.857-36.976s82.88,29.92,88.931,36.827c12.611,14.421,23.225,30.727,26.04,63.636,2.071,23.919.285,49.525-.558,62.644-.285,4.327,1.017,5.927,4.613,5.927a10.648,10.648,0,0,0,2.48-.335c6.745-1.624,18.4-7.638,30.4-10.242a27.641,27.641,0,0,1,5.964-.67c6.386,0,12.4,2.48,14.88,8.928,3.546,9.374-1.24,17-12.189,24.639-6.609,4.612-30.429,19.343-35.8,24.315-5.568,5.134-4.836,9.1-4.191,14.149.533,4.228,12.511,60.4,87.666,96.718C468.629,373.011,476.119,377.524,462.913,384.877Z\"]\n};\nvar faSnapchatGhost = faSnapchat;\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faRust = {\n prefix: 'fab',\n iconName: 'rust',\n icon: [512, 512, [], \"e07a\", \"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faSquareBehance = {\n prefix: 'fab',\n iconName: 'square-behance',\n icon: [448, 512, [\"behance-square\"], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBehanceSquare = faSquareBehance;\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faSpaceAwesome = {\n prefix: 'fab',\n iconName: 'space-awesome',\n icon: [512, 512, [], \"e5ac\", \"M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faSquareGit = {\n prefix: 'fab',\n iconName: 'square-git',\n icon: [448, 512, [\"git-square\"], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGitSquare = faSquareGit;\nvar faSquareTumblr = {\n prefix: 'fab',\n iconName: 'square-tumblr',\n icon: [448, 512, [\"tumblr-square\"], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTumblrSquare = faSquareTumblr;\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faPerbyte = {\n prefix: 'fab',\n iconName: 'perbyte',\n icon: [448, 512, [], \"e083\", \"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faBots = {\n prefix: 'fab',\n iconName: 'bots',\n icon: [640, 512, [], \"e340\", \"M86.344,197.834a51.767,51.767,0,0,0-41.57,20.058V156.018a8.19,8.19,0,0,0-8.19-8.19H8.19A8.19,8.19,0,0,0,0,156.018V333.551a8.189,8.189,0,0,0,8.19,8.189H36.584a8.189,8.189,0,0,0,8.19-8.189v-8.088c11.628,13.373,25.874,19.769,41.573,19.769,34.6,0,61.922-26.164,61.922-73.843C148.266,225.452,121.229,197.834,86.344,197.834ZM71.516,305.691c-9.593,0-21.221-4.942-26.745-12.5V250.164c5.528-7.558,17.152-12.791,26.745-12.791,17.734,0,31.107,13.082,31.107,34.013C102.623,292.609,89.25,305.691,71.516,305.691Zm156.372-59.032a17.4,17.4,0,1,0,17.4,17.4A17.4,17.4,0,0,0,227.888,246.659ZM273.956,156.7V112.039a13.308,13.308,0,1,0-10.237,0V156.7a107.49,107.49,0,1,0,10.237,0Zm85.993,107.367c0,30.531-40.792,55.281-91.112,55.281s-91.111-24.75-91.111-55.281,40.792-55.281,91.111-55.281S359.949,233.532,359.949,264.062Zm-50.163,17.4a17.4,17.4,0,1,0-17.4-17.4h0A17.4,17.4,0,0,0,309.786,281.466ZM580.7,250.455c-14.828-2.617-22.387-3.78-22.387-9.885,0-5.523,7.268-9.884,17.735-9.884a65.56,65.56,0,0,1,34.484,10.1,8.171,8.171,0,0,0,11.288-2.468c.07-.11.138-.221.2-.333l8.611-14.886a8.2,8.2,0,0,0-2.867-11.123,99.863,99.863,0,0,0-52.014-14.138c-38.956,0-60.179,21.514-60.179,46.225,0,36.342,33.725,41.864,57.563,45.642,13.373,2.326,24.13,4.361,24.13,11.048,0,6.4-5.523,10.757-18.9,10.757-13.552,0-30.994-6.222-42.623-13.579a8.206,8.206,0,0,0-11.335,2.491c-.035.054-.069.108-.1.164l-10.2,16.891a8.222,8.222,0,0,0,2.491,11.066c15.224,10.3,37.663,16.692,59.441,16.692,40.409,0,63.957-19.769,63.957-46.515C640,260.63,604.537,254.816,580.7,250.455Zm-95.928,60.787a8.211,8.211,0,0,0-9.521-5.938,23.168,23.168,0,0,1-4.155.387c-7.849,0-12.5-6.106-12.5-14.245V240.28h20.349a8.143,8.143,0,0,0,8.141-8.143V209.466a8.143,8.143,0,0,0-8.141-8.143H458.594V171.091a8.143,8.143,0,0,0-8.143-8.143H422.257a8.143,8.143,0,0,0-8.143,8.143h0v30.232H399a8.143,8.143,0,0,0-8.143,8.143h0v22.671A8.143,8.143,0,0,0,399,240.28h15.115v63.667c0,27.037,15.408,41.282,43.9,41.282,12.183,0,21.383-2.2,27.6-5.446a8.161,8.161,0,0,0,4.145-9.278Z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"e013\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [61802], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"e007\", \"M130.22 127.548C130.38 127.558 130.3 127.558 130.22 127.548V127.548ZM481.64 172.898C471.03 147.398 449.56 119.898 432.7 111.168C446.42 138.058 454.37 165.048 457.4 185.168C457.405 185.306 457.422 185.443 457.45 185.578C429.87 116.828 383.098 89.1089 344.9 28.7479C329.908 5.05792 333.976 3.51792 331.82 4.08792L331.7 4.15792C284.99 30.1109 256.365 82.5289 249.12 126.898C232.503 127.771 216.219 131.895 201.19 139.035C199.838 139.649 198.736 140.706 198.066 142.031C197.396 143.356 197.199 144.87 197.506 146.323C197.7 147.162 198.068 147.951 198.586 148.639C199.103 149.327 199.76 149.899 200.512 150.318C201.264 150.737 202.096 150.993 202.954 151.071C203.811 151.148 204.676 151.045 205.491 150.768L206.011 150.558C221.511 143.255 238.408 139.393 255.541 139.238C318.369 138.669 352.698 183.262 363.161 201.528C350.161 192.378 326.811 183.338 304.341 187.248C392.081 231.108 368.541 381.784 246.951 376.448C187.487 373.838 149.881 325.467 146.421 285.648C146.421 285.648 157.671 243.698 227.041 243.698C234.541 243.698 255.971 222.778 256.371 216.698C256.281 214.698 213.836 197.822 197.281 181.518C188.434 172.805 184.229 168.611 180.511 165.458C178.499 163.75 176.392 162.158 174.201 160.688C168.638 141.231 168.399 120.638 173.51 101.058C148.45 112.468 128.96 130.508 114.8 146.428H114.68C105.01 134.178 105.68 93.7779 106.25 85.3479C106.13 84.8179 99.022 89.0159 98.1 89.6579C89.5342 95.7103 81.5528 102.55 74.26 110.088C57.969 126.688 30.128 160.242 18.76 211.318C14.224 231.701 12 255.739 12 263.618C12 398.318 121.21 507.508 255.92 507.508C376.56 507.508 478.939 420.281 496.35 304.888C507.922 228.192 481.64 173.82 481.64 172.898Z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M500.676,159.486a12.779,12.779,0,0,0-6.4-8.282,13.954,13.954,0,0,0-10.078-1.125L457.8,156.7l-.043-.2-22.3,5.785-1.243.333-.608-2.17A369.037,369.037,0,0,0,347.538,4.289a14.1,14.1,0,0,0-19.784-.463l-102.9,102.747H24.947A24.9,24.9,0,0,0,0,131.417V380.38a24.963,24.963,0,0,0,24.918,24.9H224.986L328.072,508a13.667,13.667,0,0,0,19.327,0c.126-.126.249-.255.37-.385a368.025,368.025,0,0,0,69.577-107.374,403.45,403.45,0,0,0,17.3-50.8v-.028l20.406,5.336.029-.073L483.345,362a20.253,20.253,0,0,0,2.619.5,13.359,13.359,0,0,0,4.139-.072,13.5,13.5,0,0,0,10.515-9.924,415.855,415.855,0,0,0,.058-193.013ZM337.125,24.65l.013.014h-.013Zm-110.2,165.161L174.311,281.1a11.338,11.338,0,0,0-1.489,5.655v46.189a22.04,22.04,0,0,1-22.041,22h-3.4A22.068,22.068,0,0,1,125.3,332.962V287.294a11.532,11.532,0,0,0-1.388-5.51l-51.6-92.2a21.988,21.988,0,0,1,19.264-32.726h3.268a22.059,22.059,0,0,1,19.611,11.916l36.357,70.281,37.515-70.512a22.066,22.066,0,0,1,38.556-.695,21.7,21.7,0,0,1,0,21.967ZM337.145,24.673a348.147,348.147,0,0,1,75.8,141.335l.564,1.952-114.134,29.6V131.417a25.006,25.006,0,0,0-24.947-24.9H255.067Zm60.5,367.305v-.043l-.014.014a347.19,347.19,0,0,1-60.177,95.227l-82.2-81.893h19.177a24.978,24.978,0,0,0,24.947-24.9v-66.2l114.6,29.862A385.191,385.191,0,0,1,397.648,391.978Zm84-52.45.015.014-50.618-13.131L299.379,292.1V219.572l119.746-30.99,4.468-1.157,39.54-10.253,18.511-4.816A393,393,0,0,1,481.644,339.528Z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [62462, \"telegram-plane\"], \"f2c6\", \"M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z\"]\n};\nvar faTelegramPlane = faTelegram;\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faSquareWhatsapp = {\n prefix: 'fab',\n iconName: 'square-whatsapp',\n icon: [448, 512, [\"whatsapp-square\"], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhatsappSquare = faSquareWhatsapp;\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faEdgeLegacy = {\n prefix: 'fab',\n iconName: 'edge-legacy',\n icon: [512, 512, [], \"e078\", \"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [62447, \"slack-hash\"], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = faSlack;\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [640, 512, [62407, \"medium-m\"], \"f23a\", \"M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z\"]\n};\nvar faMediumM = faMedium;\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M212.98 346.566H179.789V195.114L185.973 173.47H175.262L137.127 346.566H76.1069L37.7323 173.47H27.276L33.1913 195.114V346.566H0V165H65.6506L102.248 338.096H110.747L147.329 165H212.98L212.98 346.566ZM544.459 283.589L458.434 345.655V307.534L531.329 255.776L458.434 204.017V165.896L544.459 228.231H553.721L640 165.896V204.017L566.866 255.776L640 307.549V345.655L553.721 283.589H544.459ZM430.157 272.311H248.113V239.255H430.157V272.311Z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faSitrox = {\n prefix: 'fab',\n iconName: 'sitrox',\n icon: [448, 512, [], \"e44a\", \"M212.439 0.00846128V0H448V128H64C64 57.6008 141.755 0.475338 212.439 0.00846128ZM237.256 192V192.007C307.135 192.475 384 249.6 384 320H210.809V319.995C140.915 319.563 64 262.424 64 192H237.256ZM235.565 511.993C306.251 511.521 384 454.399 384 384H0V512H235.565V511.993Z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faWodu = {\n prefix: 'fab',\n iconName: 'wodu',\n icon: [640, 512, [], \"e088\", \"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"]\n};\nvar faGooglePay = {\n prefix: 'fab',\n iconName: 'google-pay',\n icon: [640, 512, [], \"e079\", \"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faPix = {\n prefix: 'fab',\n iconName: 'pix',\n icon: [512, 512, [], \"e43a\", \"M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar icons = {\n faMonero: faMonero,\n faHooli: faHooli,\n faYelp: faYelp,\n faCcVisa: faCcVisa,\n faLastfm: faLastfm,\n faShopware: faShopware,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faAws: faAws,\n faRedhat: faRedhat,\n faYoast: faYoast,\n faCloudflare: faCloudflare,\n faUps: faUps,\n faWpexplorer: faWpexplorer,\n faDyalog: faDyalog,\n faBity: faBity,\n faStackpath: faStackpath,\n faBuysellads: faBuysellads,\n faFirstOrder: faFirstOrder,\n faModx: faModx,\n faGuilded: faGuilded,\n faVnv: faVnv,\n faSquareJs: faSquareJs,\n faJsSquare: faJsSquare,\n faMicrosoft: faMicrosoft,\n faQq: faQq,\n faOrcid: faOrcid,\n faJava: faJava,\n faInvision: faInvision,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCentercode: faCentercode,\n faGlideG: faGlideG,\n faDrupal: faDrupal,\n faHireAHelper: faHireAHelper,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faUnity: faUnity,\n faWhmcs: faWhmcs,\n faRocketchat: faRocketchat,\n faVk: faVk,\n faUntappd: faUntappd,\n faMailchimp: faMailchimp,\n faCss3Alt: faCss3Alt,\n faSquareReddit: faSquareReddit,\n faRedditSquare: faRedditSquare,\n faVimeoV: faVimeoV,\n faContao: faContao,\n faSquareFontAwesome: faSquareFontAwesome,\n faDeskpro: faDeskpro,\n faSistrix: faSistrix,\n faSquareInstagram: faSquareInstagram,\n faInstagramSquare: faInstagramSquare,\n faBattleNet: faBattleNet,\n faTheRedYeti: faTheRedYeti,\n faSquareHackerNews: faSquareHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faEdge: faEdge,\n faNapster: faNapster,\n faSquareSnapchat: faSquareSnapchat,\n faSnapchatSquare: faSnapchatSquare,\n faGooglePlusG: faGooglePlusG,\n faArtstation: faArtstation,\n faMarkdown: faMarkdown,\n faSourcetree: faSourcetree,\n faGooglePlus: faGooglePlus,\n faDiaspora: faDiaspora,\n faFoursquare: faFoursquare,\n faStackOverflow: faStackOverflow,\n faGithubAlt: faGithubAlt,\n faPhoenixSquadron: faPhoenixSquadron,\n faPagelines: faPagelines,\n faAlgolia: faAlgolia,\n faRedRiver: faRedRiver,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faSafari: faSafari,\n faGoogle: faGoogle,\n faSquareFontAwesomeStroke: faSquareFontAwesomeStroke,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faAtlassian: faAtlassian,\n faLinkedinIn: faLinkedinIn,\n faDigitalOcean: faDigitalOcean,\n faNimblr: faNimblr,\n faChromecast: faChromecast,\n faEvernote: faEvernote,\n faHackerNews: faHackerNews,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faAdversal: faAdversal,\n faCreativeCommons: faCreativeCommons,\n faWatchmanMonitoring: faWatchmanMonitoring,\n faFonticons: faFonticons,\n faWeixin: faWeixin,\n faShirtsinbulk: faShirtsinbulk,\n faCodepen: faCodepen,\n faGitAlt: faGitAlt,\n faLyft: faLyft,\n faRev: faRev,\n faWindows: faWindows,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faSquareViadeo: faSquareViadeo,\n faViadeoSquare: faViadeoSquare,\n faMeetup: faMeetup,\n faCentos: faCentos,\n faAdn: faAdn,\n faCloudsmith: faCloudsmith,\n faPiedPiperAlt: faPiedPiperAlt,\n faSquareDribbble: faSquareDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faCodiepie: faCodiepie,\n faNode: faNode,\n faMix: faMix,\n faSteam: faSteam,\n faCcApplePay: faCcApplePay,\n faScribd: faScribd,\n faOpenid: faOpenid,\n faInstalod: faInstalod,\n faExpeditedssl: faExpeditedssl,\n faSellcast: faSellcast,\n faSquareTwitter: faSquareTwitter,\n faTwitterSquare: faTwitterSquare,\n faRProject: faRProject,\n faDelicious: faDelicious,\n faFreebsd: faFreebsd,\n faVuejs: faVuejs,\n faAccusoft: faAccusoft,\n faIoxhost: faIoxhost,\n faFonticonsFi: faFonticonsFi,\n faAppStore: faAppStore,\n faCcMastercard: faCcMastercard,\n faItunesNote: faItunesNote,\n faGolang: faGolang,\n faKickstarter: faKickstarter,\n faGrav: faGrav,\n faWeibo: faWeibo,\n faUncharted: faUncharted,\n faFirstdraft: faFirstdraft,\n faSquareYoutube: faSquareYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faWikipediaW: faWikipediaW,\n faWpressr: faWpressr,\n faRendact: faRendact,\n faAngellist: faAngellist,\n faGalacticRepublic: faGalacticRepublic,\n faNfcDirectional: faNfcDirectional,\n faSkype: faSkype,\n faJoget: faJoget,\n faFedora: faFedora,\n faStripeS: faStripeS,\n faMeta: faMeta,\n faLaravel: faLaravel,\n faHotjar: faHotjar,\n faBluetoothB: faBluetoothB,\n faStickerMule: faStickerMule,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faHips: faHips,\n faBehance: faBehance,\n faReddit: faReddit,\n faDiscord: faDiscord,\n faChrome: faChrome,\n faAppStoreIos: faAppStoreIos,\n faCcDiscover: faCcDiscover,\n faWpbeginner: faWpbeginner,\n faConfluence: faConfluence,\n faMdb: faMdb,\n faDochub: faDochub,\n faAccessibleIcon: faAccessibleIcon,\n faEbay: faEbay,\n faAmazon: faAmazon,\n faUnsplash: faUnsplash,\n faYarn: faYarn,\n faSquareSteam: faSquareSteam,\n faSteamSquare: faSteamSquare,\n fa500px: fa500px,\n faSquareVimeo: faSquareVimeo,\n faVimeoSquare: faVimeoSquare,\n faAsymmetrik: faAsymmetrik,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faGratipay: faGratipay,\n faApple: faApple,\n faHive: faHive,\n faGitkraken: faGitkraken,\n faKeybase: faKeybase,\n faApplePay: faApplePay,\n faPadlet: faPadlet,\n faAmazonPay: faAmazonPay,\n faSquareGithub: faSquareGithub,\n faGithubSquare: faGithubSquare,\n faStumbleupon: faStumbleupon,\n faFedex: faFedex,\n faPhoenixFramework: faPhoenixFramework,\n faShopify: faShopify,\n faNeos: faNeos,\n faHackerrank: faHackerrank,\n faResearchgate: faResearchgate,\n faSwift: faSwift,\n faAngular: faAngular,\n faSpeakap: faSpeakap,\n faAngrycreative: faAngrycreative,\n faYCombinator: faYCombinator,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faSquareGitlab: faSquareGitlab,\n faGitlabSquare: faGitlabSquare,\n faStudiovinari: faStudiovinari,\n faPiedPiper: faPiedPiper,\n faWordpress: faWordpress,\n faProductHunt: faProductHunt,\n faFirefox: faFirefox,\n faLinode: faLinode,\n faGoodreads: faGoodreads,\n faSquareOdnoklassniki: faSquareOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faJsfiddle: faJsfiddle,\n faSith: faSith,\n faThemeisle: faThemeisle,\n faPage4: faPage4,\n faHashnode: faHashnode,\n faReact: faReact,\n faCcPaypal: faCcPaypal,\n faSquarespace: faSquarespace,\n faCcStripe: faCcStripe,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faBitcoin: faBitcoin,\n faKeycdn: faKeycdn,\n faOpera: faOpera,\n faItchIo: faItchIo,\n faUmbraco: faUmbraco,\n faGalacticSenate: faGalacticSenate,\n faUbuntu: faUbuntu,\n faDraft2digital: faDraft2digital,\n faStripe: faStripe,\n faHouzz: faHouzz,\n faGg: faGg,\n faDhl: faDhl,\n faSquarePinterest: faSquarePinterest,\n faPinterestSquare: faPinterestSquare,\n faXing: faXing,\n faBlackberry: faBlackberry,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faPlaystation: faPlaystation,\n faQuinscape: faQuinscape,\n faLess: faLess,\n faBloggerB: faBloggerB,\n faOpencart: faOpencart,\n faVine: faVine,\n faPaypal: faPaypal,\n faGitlab: faGitlab,\n faTypo3: faTypo3,\n faRedditAlien: faRedditAlien,\n faYahoo: faYahoo,\n faDailymotion: faDailymotion,\n faAffiliatetheme: faAffiliatetheme,\n faPiedPiperPp: faPiedPiperPp,\n faBootstrap: faBootstrap,\n faOdnoklassniki: faOdnoklassniki,\n faNfcSymbol: faNfcSymbol,\n faEthereum: faEthereum,\n faSpeakerDeck: faSpeakerDeck,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faPatreon: faPatreon,\n faAvianex: faAvianex,\n faEllo: faEllo,\n faGofore: faGofore,\n faBimobject: faBimobject,\n faFacebookF: faFacebookF,\n faSquareGooglePlus: faSquareGooglePlus,\n faGooglePlusSquare: faGooglePlusSquare,\n faMandalorian: faMandalorian,\n faFirstOrderAlt: faFirstOrderAlt,\n faOsi: faOsi,\n faGoogleWallet: faGoogleWallet,\n faDAndDBeyond: faDAndDBeyond,\n faPeriscope: faPeriscope,\n faFulcrum: faFulcrum,\n faCloudscale: faCloudscale,\n faForumbee: faForumbee,\n faMizuni: faMizuni,\n faSchlix: faSchlix,\n faSquareXing: faSquareXing,\n faXingSquare: faXingSquare,\n faBandcamp: faBandcamp,\n faWpforms: faWpforms,\n faCloudversify: faCloudversify,\n faUsps: faUsps,\n faMegaport: faMegaport,\n faMagento: faMagento,\n faSpotify: faSpotify,\n faOptinMonster: faOptinMonster,\n faFly: faFly,\n faAviato: faAviato,\n faItunes: faItunes,\n faCuttlefish: faCuttlefish,\n faBlogger: faBlogger,\n faFlickr: faFlickr,\n faViber: faViber,\n faSoundcloud: faSoundcloud,\n faDigg: faDigg,\n faTencentWeibo: faTencentWeibo,\n faSymfony: faSymfony,\n faMaxcdn: faMaxcdn,\n faEtsy: faEtsy,\n faFacebookMessenger: faFacebookMessenger,\n faAudible: faAudible,\n faThinkPeaks: faThinkPeaks,\n faBilibili: faBilibili,\n faErlang: faErlang,\n faCottonBureau: faCottonBureau,\n faDashcube: faDashcube,\n fa42Group: fa42Group,\n faInnosoft: faInnosoft,\n faStackExchange: faStackExchange,\n faElementor: faElementor,\n faSquarePiedPiper: faSquarePiedPiper,\n faPiedPiperSquare: faPiedPiperSquare,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faPalfed: faPalfed,\n faSuperpowers: faSuperpowers,\n faResolving: faResolving,\n faXbox: faXbox,\n faSearchengin: faSearchengin,\n faTiktok: faTiktok,\n faSquareFacebook: faSquareFacebook,\n faFacebookSquare: faFacebookSquare,\n faRenren: faRenren,\n faLinux: faLinux,\n faGlide: faGlide,\n faLinkedin: faLinkedin,\n faHubspot: faHubspot,\n faDeploydog: faDeploydog,\n faTwitch: faTwitch,\n faRavelry: faRavelry,\n faMixer: faMixer,\n faSquareLastfm: faSquareLastfm,\n faLastfmSquare: faLastfmSquare,\n faVimeo: faVimeo,\n faMendeley: faMendeley,\n faUniregistry: faUniregistry,\n faFigma: faFigma,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCcAmazonPay: faCcAmazonPay,\n faDropbox: faDropbox,\n faInstagram: faInstagram,\n faCmplid: faCmplid,\n faFacebook: faFacebook,\n faGripfire: faGripfire,\n faJediOrder: faJediOrder,\n faUikit: faUikit,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faPhabricator: faPhabricator,\n faUssunnah: faUssunnah,\n faEarlybirds: faEarlybirds,\n faTradeFederation: faTradeFederation,\n faAutoprefixer: faAutoprefixer,\n faWhatsapp: faWhatsapp,\n faSlideshare: faSlideshare,\n faGooglePlay: faGooglePlay,\n faViadeo: faViadeo,\n faLine: faLine,\n faGoogleDrive: faGoogleDrive,\n faServicestack: faServicestack,\n faSimplybuilt: faSimplybuilt,\n faBitbucket: faBitbucket,\n faImdb: faImdb,\n faDeezer: faDeezer,\n faRaspberryPi: faRaspberryPi,\n faJira: faJira,\n faDocker: faDocker,\n faScreenpal: faScreenpal,\n faBluetooth: faBluetooth,\n faGitter: faGitter,\n faDAndD: faDAndD,\n faMicroblog: faMicroblog,\n faCcDinersClub: faCcDinersClub,\n faGgCircle: faGgCircle,\n faPiedPiperHat: faPiedPiperHat,\n faKickstarterK: faKickstarterK,\n faYandex: faYandex,\n faReadme: faReadme,\n faHtml5: faHtml5,\n faSellsy: faSellsy,\n faSass: faSass,\n faWirsindhandwerk: faWirsindhandwerk,\n faWsh: faWsh,\n faBuromobelexperte: faBuromobelexperte,\n faSalesforce: faSalesforce,\n faOctopusDeploy: faOctopusDeploy,\n faMedapps: faMedapps,\n faNs8: faNs8,\n faPinterestP: faPinterestP,\n faApper: faApper,\n faFortAwesome: faFortAwesome,\n faWaze: faWaze,\n faCcJcb: faCcJcb,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faFantasyFlightGames: faFantasyFlightGames,\n faRust: faRust,\n faWix: faWix,\n faSquareBehance: faSquareBehance,\n faBehanceSquare: faBehanceSquare,\n faSupple: faSupple,\n faRebel: faRebel,\n faCss3: faCss3,\n faStaylinked: faStaylinked,\n faKaggle: faKaggle,\n faSpaceAwesome: faSpaceAwesome,\n faDeviantart: faDeviantart,\n faCpanel: faCpanel,\n faGoodreadsG: faGoodreadsG,\n faSquareGit: faSquareGit,\n faGitSquare: faGitSquare,\n faSquareTumblr: faSquareTumblr,\n faTumblrSquare: faTumblrSquare,\n faTrello: faTrello,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faGetPocket: faGetPocket,\n faPerbyte: faPerbyte,\n faGrunt: faGrunt,\n faWeebly: faWeebly,\n faConnectdevelop: faConnectdevelop,\n faLeanpub: faLeanpub,\n faBlackTie: faBlackTie,\n faThemeco: faThemeco,\n faPython: faPython,\n faAndroid: faAndroid,\n faBots: faBots,\n faFreeCodeCamp: faFreeCodeCamp,\n faHornbill: faHornbill,\n faJs: faJs,\n faIdeal: faIdeal,\n faGit: faGit,\n faDev: faDev,\n faSketch: faSketch,\n faYandexInternational: faYandexInternational,\n faCcAmex: faCcAmex,\n faUber: faUber,\n faGithub: faGithub,\n faPhp: faPhp,\n faAlipay: faAlipay,\n faYoutube: faYoutube,\n faSkyatlas: faSkyatlas,\n faFirefoxBrowser: faFirefoxBrowser,\n faReplyd: faReplyd,\n faSuse: faSuse,\n faJenkins: faJenkins,\n faTwitter: faTwitter,\n faRockrms: faRockrms,\n faPinterest: faPinterest,\n faBuffer: faBuffer,\n faNpm: faNpm,\n faYammer: faYammer,\n faBtc: faBtc,\n faDribbble: faDribbble,\n faStumbleuponCircle: faStumbleuponCircle,\n faInternetExplorer: faInternetExplorer,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faOldRepublic: faOldRepublic,\n faSquareWhatsapp: faSquareWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faNodeJs: faNodeJs,\n faEdgeLegacy: faEdgeLegacy,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faMedrt: faMedrt,\n faUsb: faUsb,\n faTumblr: faTumblr,\n faVaadin: faVaadin,\n faQuora: faQuora,\n faReacteurope: faReacteurope,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faAmilia: faAmilia,\n faMixcloud: faMixcloud,\n faFlipboard: faFlipboard,\n faViacoin: faViacoin,\n faCriticalRole: faCriticalRole,\n faSitrox: faSitrox,\n faDiscourse: faDiscourse,\n faJoomla: faJoomla,\n faMastodon: faMastodon,\n faAirbnb: faAirbnb,\n faWolfPackBattalion: faWolfPackBattalion,\n faBuyNLarge: faBuyNLarge,\n faGulp: faGulp,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faStrava: faStrava,\n faEmber: faEmber,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faTeamspeak: faTeamspeak,\n faPushed: faPushed,\n faWordpressSimple: faWordpressSimple,\n faNutritionix: faNutritionix,\n faWodu: faWodu,\n faGooglePay: faGooglePay,\n faIntercom: faIntercom,\n faZhihu: faZhihu,\n faKorvue: faKorvue,\n faPix: faPix,\n faSteamSymbol: faSteamSymbol\n};\n\nexport { icons as fab, prefix, faMonero, faHooli, faYelp, faCcVisa, faLastfm, faShopware, faCreativeCommonsNc, faAws, faRedhat, faYoast, faCloudflare, faUps, faWpexplorer, faDyalog, faBity, faStackpath, faBuysellads, faFirstOrder, faModx, faGuilded, faVnv, faSquareJs, faJsSquare, faMicrosoft, faQq, faOrcid, faJava, faInvision, faCreativeCommonsPdAlt, faCentercode, faGlideG, faDrupal, faHireAHelper, faCreativeCommonsBy, faUnity, faWhmcs, faRocketchat, faVk, faUntappd, faMailchimp, faCss3Alt, faSquareReddit, faRedditSquare, faVimeoV, faContao, faSquareFontAwesome, faDeskpro, faSistrix, faSquareInstagram, faInstagramSquare, faBattleNet, faTheRedYeti, faSquareHackerNews, faHackerNewsSquare, faEdge, faNapster, faSquareSnapchat, faSnapchatSquare, faGooglePlusG, faArtstation, faMarkdown, faSourcetree, faGooglePlus, faDiaspora, faFoursquare, faStackOverflow, faGithubAlt, faPhoenixSquadron, faPagelines, faAlgolia, faRedRiver, faCreativeCommonsSa, faSafari, faGoogle, faSquareFontAwesomeStroke, faFontAwesomeAlt, faAtlassian, faLinkedinIn, faDigitalOcean, faNimblr, faChromecast, faEvernote, faHackerNews, faCreativeCommonsSampling, faAdversal, faCreativeCommons, faWatchmanMonitoring, faFonticons, faWeixin, faShirtsinbulk, faCodepen, faGitAlt, faLyft, faRev, faWindows, faWizardsOfTheCoast, faSquareViadeo, faViadeoSquare, faMeetup, faCentos, faAdn, faCloudsmith, faPiedPiperAlt, faSquareDribbble, faDribbbleSquare, faCodiepie, faNode, faMix, faSteam, faCcApplePay, faScribd, faOpenid, faInstalod, faExpeditedssl, faSellcast, faSquareTwitter, faTwitterSquare, faRProject, faDelicious, faFreebsd, faVuejs, faAccusoft, faIoxhost, faFonticonsFi, faAppStore, faCcMastercard, faItunesNote, faGolang, faKickstarter, faGrav, faWeibo, faUncharted, faFirstdraft, faSquareYoutube, faYoutubeSquare, faWikipediaW, faWpressr, faRendact, faAngellist, faGalacticRepublic, faNfcDirectional, faSkype, faJoget, faFedora, faStripeS, faMeta, faLaravel, faHotjar, faBluetoothB, faStickerMule, faCreativeCommonsZero, faHips, faBehance, faReddit, faDiscord, faChrome, faAppStoreIos, faCcDiscover, faWpbeginner, faConfluence, faMdb, faDochub, faAccessibleIcon, faEbay, faAmazon, faUnsplash, faYarn, faSquareSteam, faSteamSquare, fa500px, faSquareVimeo, faVimeoSquare, faAsymmetrik, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faGratipay, faApple, faHive, faGitkraken, faKeybase, faApplePay, faPadlet, faAmazonPay, faSquareGithub, faGithubSquare, faStumbleupon, faFedex, faPhoenixFramework, faShopify, faNeos, faHackerrank, faResearchgate, faSwift, faAngular, faSpeakap, faAngrycreative, faYCombinator, faEmpire, faEnvira, faSquareGitlab, faGitlabSquare, faStudiovinari, faPiedPiper, faWordpress, faProductHunt, faFirefox, faLinode, faGoodreads, faSquareOdnoklassniki, faOdnoklassnikiSquare, faJsfiddle, faSith, faThemeisle, faPage4, faHashnode, faReact, faCcPaypal, faSquarespace, faCcStripe, faCreativeCommonsShare, faBitcoin, faKeycdn, faOpera, faItchIo, faUmbraco, faGalacticSenate, faUbuntu, faDraft2digital, faStripe, faHouzz, faGg, faDhl, faSquarePinterest, faPinterestSquare, faXing, faBlackberry, faCreativeCommonsPd, faPlaystation, faQuinscape, faLess, faBloggerB, faOpencart, faVine, faPaypal, faGitlab, faTypo3, faRedditAlien, faYahoo, faDailymotion, faAffiliatetheme, faPiedPiperPp, faBootstrap, faOdnoklassniki, faNfcSymbol, faEthereum, faSpeakerDeck, faCreativeCommonsNcEu, faPatreon, faAvianex, faEllo, faGofore, faBimobject, faFacebookF, faSquareGooglePlus, faGooglePlusSquare, faMandalorian, faFirstOrderAlt, faOsi, faGoogleWallet, faDAndDBeyond, faPeriscope, faFulcrum, faCloudscale, faForumbee, faMizuni, faSchlix, faSquareXing, faXingSquare, faBandcamp, faWpforms, faCloudversify, faUsps, faMegaport, faMagento, faSpotify, faOptinMonster, faFly, faAviato, faItunes, faCuttlefish, faBlogger, faFlickr, faViber, faSoundcloud, faDigg, faTencentWeibo, faSymfony, faMaxcdn, faEtsy, faFacebookMessenger, faAudible, faThinkPeaks, faBilibili, faErlang, faCottonBureau, faDashcube, fa42Group, faInnosoft, faStackExchange, faElementor, faSquarePiedPiper, faPiedPiperSquare, faCreativeCommonsNd, faPalfed, faSuperpowers, faResolving, faXbox, faSearchengin, faTiktok, faSquareFacebook, faFacebookSquare, faRenren, faLinux, faGlide, faLinkedin, faHubspot, faDeploydog, faTwitch, faRavelry, faMixer, faSquareLastfm, faLastfmSquare, faVimeo, faMendeley, faUniregistry, faFigma, faCreativeCommonsRemix, faCcAmazonPay, faDropbox, faInstagram, faCmplid, faFacebook, faGripfire, faJediOrder, faUikit, faFortAwesomeAlt, faPhabricator, faUssunnah, faEarlybirds, faTradeFederation, faAutoprefixer, faWhatsapp, faSlideshare, faGooglePlay, faViadeo, faLine, faGoogleDrive, faServicestack, faSimplybuilt, faBitbucket, faImdb, faDeezer, faRaspberryPi, faJira, faDocker, faScreenpal, faBluetooth, faGitter, faDAndD, faMicroblog, faCcDinersClub, faGgCircle, faPiedPiperHat, faKickstarterK, faYandex, faReadme, faHtml5, faSellsy, faSass, faWirsindhandwerk, faWsh, faBuromobelexperte, faSalesforce, faOctopusDeploy, faMedapps, faNs8, faPinterestP, faApper, faFortAwesome, faWaze, faCcJcb, faSnapchat, faSnapchatGhost, faFantasyFlightGames, faRust, faWix, faSquareBehance, faBehanceSquare, faSupple, faRebel, faCss3, faStaylinked, faKaggle, faSpaceAwesome, faDeviantart, faCpanel, faGoodreadsG, faSquareGit, faGitSquare, faSquareTumblr, faTumblrSquare, faTrello, faCreativeCommonsNcJp, faGetPocket, faPerbyte, faGrunt, faWeebly, faConnectdevelop, faLeanpub, faBlackTie, faThemeco, faPython, faAndroid, faBots, faFreeCodeCamp, faHornbill, faJs, faIdeal, faGit, faDev, faSketch, faYandexInternational, faCcAmex, faUber, faGithub, faPhp, faAlipay, faYoutube, faSkyatlas, faFirefoxBrowser, faReplyd, faSuse, faJenkins, faTwitter, faRockrms, faPinterest, faBuffer, faNpm, faYammer, faBtc, faDribbble, faStumbleuponCircle, faInternetExplorer, faTelegram, faTelegramPlane, faOldRepublic, faSquareWhatsapp, faWhatsappSquare, faNodeJs, faEdgeLegacy, faSlack, faSlackHash, faMedrt, faUsb, faTumblr, faVaadin, faQuora, faReacteurope, faMedium, faMediumM, faAmilia, faMixcloud, faFlipboard, faViacoin, faCriticalRole, faSitrox, faDiscourse, faJoomla, faMastodon, faAirbnb, faWolfPackBattalion, faBuyNLarge, faGulp, faCreativeCommonsSamplingPlus, faStrava, faEmber, faCanadianMapleLeaf, faTeamspeak, faPushed, faWordpressSimple, faNutritionix, faWodu, faGooglePay, faIntercom, faZhihu, faKorvue, faPix, faSteamSymbol };\n","// Register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\nvar isLocalhost = function () { return Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n); }\n\nvar waitWindowLoad\n// https://github.com/yyx990803/register-service-worker/pull/33#discussion_r394181861\nif (typeof window !== 'undefined') {\n // Typically, a browser that supports `serviceWorker` should also have supported\n // `Promise`. But as this package can be used in environments without service\n // worker support (in that case it would do nothing), there's a chance that\n // `Promise` does not exist. So we must check for its existence first.\n if (typeof Promise !== 'undefined') {\n waitWindowLoad = new Promise(function (resolve) { return window.addEventListener('load', resolve); })\n } else {\n waitWindowLoad = { then: function (cb) { return window.addEventListener('load', cb); } }\n }\n}\n\nexport function register (swUrl, hooks) {\n if ( hooks === void 0 ) hooks = {};\n\n var registrationOptions = hooks.registrationOptions; if ( registrationOptions === void 0 ) registrationOptions = {};\n delete hooks.registrationOptions\n\n var emit = function (hook) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n if (hooks && hooks[hook]) {\n hooks[hook].apply(hooks, args)\n }\n }\n\n if ('serviceWorker' in navigator) {\n waitWindowLoad.then(function () {\n if (isLocalhost()) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, emit, registrationOptions)\n navigator.serviceWorker.ready.then(function (registration) {\n emit('ready', registration)\n }).catch(function (error) { return handleError(emit, error); })\n }\n })\n }\n}\n\nfunction handleError (emit, error) {\n if (!navigator.onLine) {\n emit('offline')\n }\n emit('error', error)\n}\n\nfunction registerValidSW (swUrl, emit, registrationOptions) {\n navigator.serviceWorker\n .register(swUrl, registrationOptions)\n .then(function (registration) {\n emit('registered', registration)\n if (registration.waiting) {\n emit('updated', registration)\n return\n }\n registration.onupdatefound = function () {\n emit('updatefound', registration)\n var installingWorker = registration.installing\n installingWorker.onstatechange = function () {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n emit('updated', registration)\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n emit('cached', registration)\n }\n }\n }\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nfunction checkValidServiceWorker (swUrl, emit, registrationOptions) {\n // Check if the service worker can be found.\n fetch(swUrl)\n .then(function (response) {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404) {\n // No service worker found.\n emit('error', new Error((\"Service worker not found at \" + swUrl)))\n unregister()\n } else if (response.headers.get('content-type').indexOf('javascript') === -1) {\n emit('error', new Error(\n \"Expected \" + swUrl + \" to have javascript content-type, \" +\n \"but received \" + (response.headers.get('content-type'))))\n unregister()\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, emit, registrationOptions)\n }\n })\n .catch(function (error) { return handleError(emit, error); })\n}\n\nexport function unregister () {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(function (registration) {\n registration.unregister()\n }).catch(function (error) { return handleError(emit, error); })\n }\n}\n","/* eslint-disable no-console */\r\n\r\nimport { register } from \"register-service-worker\";\r\n\r\nif (import.meta.env.NODE_ENV === \"production\") {\r\n register(`${import.meta.env.BASE_URL}service-worker.js`, {\r\n ready() {\r\n if (import.meta.env.NODE_ENV != \"production\")\r\n // eslint-disable-next-line\r\n console.log(\r\n \"App is being served from cache by a service worker.\\n\" + \"For more details, visit https://goo.gl/AFskqB\"\r\n );\r\n },\r\n registered() {\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(\"Service worker has been registered.\"); // eslint-disable-line\r\n },\r\n cached() {\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(\"Content has been cached for offline use.\"); // eslint-disable-line\r\n },\r\n updatefound() {\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(\"New content is downloading.\"); // eslint-disable-line\r\n },\r\n updated() {\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(\"New content is available; please refresh.\"); // eslint-disable-line\r\n },\r\n offline() {\r\n if (import.meta.env.NODE_ENV != \"production\")\r\n // eslint-disable-next-line\r\n console.log(\"No internet connection found. App is running in offline mode.\");\r\n },\r\n error(error) {\r\n if (import.meta.env.NODE_ENV != \"production\") console.error(\"Error during service worker registration:\", error); // eslint-disable-line\r\n }\r\n });\r\n}\r\n","/*!\n * maska v1.5.0\n * (c) 2019-2021 Alexander Shabunevich\n * Released under the MIT License.\n */\nfunction e(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function n(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}var o={\"#\":{pattern:/[0-9]/},X:{pattern:/[0-9a-zA-Z]/},S:{pattern:/[a-zA-Z]/},A:{pattern:/[a-zA-Z]/,uppercase:!0},a:{pattern:/[a-zA-Z]/,lowercase:!0},\"!\":{escape:!0},\"*\":{repeat:!0}};function s(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return i(t).length>1?u(t)(e,t,n,r):p(e,t,n,r)}function i(e){try{return JSON.parse(e)}catch(t){return[e]}}function u(e){var t=i(e).sort((function(e,t){return e.length-t.length}));return function(e,r,a){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],s=t.map((function(t){return p(e,t,a,!1)})),i=s.pop();for(var u in t)if(n(i,t[u],a))return p(e,t[u],a,o);return\"\"};function n(e,t,n){for(var r in n)n[r].escape&&(t=t.replace(new RegExp(r+\".{1}\",\"g\"),\"\"));return t.split(\"\").filter((function(e){return n[e]&&n[e].pattern})).length>=e.length}}function p(e,t,n){for(var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=0,o=0,s=\"\",i=\"\";a<t.length&&o<e.length;){var u=t[a],p=e[o],c=n[u];if(c&&c.pattern)c.pattern.test(p)&&(s+=l(p,c),a++,r&&t[a]&&(n[t[a]]?n[t[a]]&&n[t[a]].escape&&(s+=t[a+1],a+=2):(s+=t[a],a++))),o++;else if(c&&c.repeat){var f=n[t[a-1]];f&&!f.pattern.test(p)?a++:a--}else c&&c.escape&&(u=t[++a]),r&&(s+=u),p===u&&o++,a++}for(;r&&a<t.length;){var v=t[a];if(n[v]){i=\"\";break}i+=v,a++}return s+i}function l(e,t){return t.transform&&(e=t.transform(e)),t.uppercase?e.toLocaleUpperCase():t.lowercase?e.toLocaleLowerCase():e}function c(e){return e instanceof HTMLInputElement?e:e.querySelector(\"input\")||e}function f(e){return\"[object String]\"===Object.prototype.toString.call(e)}var v=function(){function n(t){var r=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e(this,n),!t)throw new Error(\"Maska: no element for mask\");if(null!=s.preprocessor&&\"function\"!=typeof s.preprocessor)throw new Error(\"Maska: preprocessor must be a function\");if(s.tokens)for(var i in s.tokens)s.tokens[i]=a({},s.tokens[i]),s.tokens[i].pattern&&f(s.tokens[i].pattern)&&(s.tokens[i].pattern=new RegExp(s.tokens[i].pattern));this._opts={mask:s.mask,tokens:a(a({},o),s.tokens),preprocessor:s.preprocessor},this._el=f(t)?document.querySelectorAll(t):t.length?t:[t],this.inputEvent=function(e){return r.updateValue(e.target,e)},this.init()}var r,i,u;return r=n,(i=[{key:\"init\",value:function(){for(var e=this,t=function(t){var n=c(e._el[t]);!e._opts.mask||n.dataset.mask&&n.dataset.mask===e._opts.mask||(n.dataset.mask=e._opts.mask),setTimeout((function(){return e.updateValue(n)}),0),n.dataset.maskInited||(n.dataset.maskInited=!0,n.addEventListener(\"input\",e.inputEvent),n.addEventListener(\"beforeinput\",e.beforeInput))},n=0;n<this._el.length;n++)t(n)}},{key:\"destroy\",value:function(){for(var e=0;e<this._el.length;e++){var t=c(this._el[e]);t.removeEventListener(\"input\",this.inputEvent),t.removeEventListener(\"beforeinput\",this.beforeInput),delete t.dataset.mask,delete t.dataset.maskInited}}},{key:\"updateValue\",value:function(e,t){if(e&&e.type){var n=e.type.match(/^number$/i)&&e.validity.badInput;if(!e.value&&!n||!e.dataset.mask)return e.dataset.maskRawValue=\"\",void this.dispatch(\"maska\",e,t);var r=e.selectionEnd,a=e.value,o=a[r-1];e.dataset.maskRawValue=s(e.value,e.dataset.mask,this._opts.tokens,!1);var i=e.value;this._opts.preprocessor&&(i=this._opts.preprocessor(i)),e.value=s(i,e.dataset.mask,this._opts.tokens),t&&\"insertText\"===t.inputType&&r===a.length&&(r=e.value.length),function(e,t,n){for(;t&&t<e.value.length&&e.value.charAt(t-1)!==n;)t++;(e.type?e.type.match(/^(text|search|password|tel|url)$/i):!e.type)&&e===document.activeElement&&(e.setSelectionRange(t,t),setTimeout((function(){e.setSelectionRange(t,t)}),0))}(e,r,o),this.dispatch(\"maska\",e,t),e.value!==a&&this.dispatch(\"input\",e,t)}}},{key:\"beforeInput\",value:function(e){e&&e.target&&e.target.type&&e.target.type.match(/^number$/i)&&e.data&&isNaN(e.target.value+e.data)&&e.preventDefault()}},{key:\"dispatch\",value:function(e,t,n){t.dispatchEvent(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=document.createEvent(\"Event\");return n.initEvent(e,!0,!0),t&&(n.inputType=t),n}(e,n&&n.inputType||null))}}])&&t(r.prototype,i),u&&t(r,u),n}();var d,h=(d=new WeakMap,function(e,t){t.value&&(d.has(e)&&!function(e){return!(f(e.value)&&e.value===e.oldValue||Array.isArray(e.value)&&JSON.stringify(e.value)===JSON.stringify(e.oldValue)||e.value&&e.value.mask&&e.oldValue&&e.oldValue.mask&&e.value.mask===e.oldValue.mask)}(t)||d.set(e,new v(e,function(e){var t={};return e.mask?(t.mask=Array.isArray(e.mask)?JSON.stringify(e.mask):e.mask,t.tokens=e.tokens?a({},e.tokens):{},t.preprocessor=e.preprocessor):t.mask=Array.isArray(e)?JSON.stringify(e):e,t}(t.value))))});function k(e){e.directive(\"maska\",h)}function m(e,t){return new v(e,t)}\"undefined\"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(k);export default k;export{m as create,k as install,s as mask,h as maska,o as tokens};\n","import { createApp } from \"vue\";\r\nimport router from \"@/router/index\";\r\nimport App from \"./App.vue\";\r\nimport HirSelect2 from \"@/components/HirSelect2.vue\";\r\nimport HirToast from \"@/components/HirToast.vue\";\r\nimport { useStore } from \"@/store\";\r\nimport { TipoBootstrap } from \"./interfaces\";\r\nimport { dom, library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { far } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\r\nimport { createPinia } from \"pinia\";\r\nimport \"./registerServiceWorker\";\r\nimport \"@/sass/bootstrap-variables.sass\";\r\nimport \"bootstrap\";\r\nimport type { Respuesta } from \"./servicios/api\";\r\nimport maska from \"maska\";\r\n// Add all icons to the library so you can use it in your page\r\nlibrary.add(fas, far, fab);\r\n\r\ngtag(\"config\", import.meta.env.VITE_GA_ID, { send_page_view: false, transport_type: \"beacon\" });\r\n\r\nconst pinia = createPinia();\r\nconst app = createApp(App);\r\napp.use(pinia);\r\napp.use(router());\r\napp.use(maska);\r\n\r\napp.component(\"HirSelect2\", HirSelect2);\r\napp.component(\"HirToast\", HirToast);\r\n\r\nconst reg = /^\\s*at HirCasa/;\r\n\r\nconst store = useStore();\r\n\r\n//eslint-disable-next-line\r\napp.config.errorHandler = function (err: unknown, _vm, _info) {\r\n const resp = (err as any)?.response?.data as Respuesta;\r\n if (resp) {\r\n store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"<b>\" + resp.mensaje + \"</b><br>\" + (resp.data as string).split(\"\\r\\n\").filter(m => reg.test(m))\r\n });\r\n return;\r\n }\r\n const status = (err as any)?.response?.status as number;\r\n if (status == 401) {\r\n store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"<b>Usuario no identificado</b><br>\" + (err as any).config.url\r\n });\r\n return;\r\n }\r\n if (status == 403) {\r\n store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"<b>Error de permisos</b><br>\" + (err as any).config.url\r\n });\r\n return;\r\n }\r\n if (status >= 400 && status < 500) {\r\n store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: \"<b>\" + (err as Error).message + \"</b><br>\" + (err as any).config.url\r\n });\r\n return;\r\n }\r\n store.agregarToast({\r\n tipo: TipoBootstrap.DANGER,\r\n body: (err as Error).message + \"<br>\" + (err as Error).stack?.replace(/</g, \"<\").replace(/>/g, \">\")\r\n });\r\n if (import.meta.env.NODE_ENV != \"production\") console.log(err);\r\n};\r\n\r\ndom.watch();\r\n\r\napp.mount(\"#app\");\r\n"],"file":"assets/index.8ab13396.js"}